前提・実現したいこと
https://beta.atcoder.jp/contests/abc097/tasks/abc097_b
この問題を解きたいです。
自分で考えた添付の画像通りに沿ってコードを書きました。
最初の条件分岐ですがb!=1をb==1に直していますが
そのほかは大きな変更はありません。
発生している問題・エラーメッセージ
コンパイルエラーは出ていませんが x=1,2のとき以外はどこかでループしていてプログラムが終わらず x=2のときでもまともな答えが出ません。
該当のソースコード
c
1#include<stdio.h> 2//b^pを計算する関数 3int myCalc(int b, int p) 4{ 5 int i = 1; 6 7 while(i <= p-1){ 8 b=b*b; 9 } 10 11 return b; 12} 13 14int main(void) 15{ 16 int x=0, b=1, p; 17 int max=1; 18 19 scanf("%d", &x); 20 21 for(;;){ 22 p=1; 23 if(b==1){ 24 if(x==myCalc(b, p)){ 25 printf("1\n"); 26 return 0; 27 }else{ 28 b++; 29 printf("b:%d\n", b); 30 } 31 } 32 printf("stop\n"); 33 while(x > myCalc(b, p)){ 34 p++; 35 printf("p:%d", p); 36 } 37 if(p!=1){ 38 if(myCalc(b, p) > max) max = myCalc(b, p); 39 b++; 40 printf("b:%d\n", b); 41 }else{ 42 printf("%d\n", max); 43 return 0; 44 } 45 printf("***\n"); 46 } 47} 48
試したこと
プリントデバッグで、stopまでしか表示されないことがわかりました。
理由がわかりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/05 08:49