teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

コード再追加

2019/04/30 09:42

投稿

jimbe
jimbe

スコア13352

answer CHANGED
@@ -1,4 +1,28 @@
1
1
  最後の2重forループでは,
2
2
  ・内側ループは, 一致もしくは大きくなったら break 出来るはず.
3
3
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
4
- と想像します.
4
+ と想像します.
5
+
6
+ これであってますでしょうか.
7
+ ```C
8
+ int main(int argc, char *argv[]){
9
+ int fv, gv, ans=0;
10
+ long long int n;
11
+
12
+ scanf("%llu", &n);
13
+ setfg(n);
14
+
15
+ while(1) {
16
+ fv = f();
17
+ gv = g();
18
+ while(fv != -1 && gv != -1 && fv != gv) {
19
+ if(fv < gv) fv = f();
20
+ if(fv > gv) gv = g();
21
+ }
22
+ if(fv == -1 || gv == -1) break;
23
+ ans++;
24
+ }
25
+ printf("%d\n", ans);
26
+ return 0;
27
+ }
28
+ ```

2

コードにバグが見つかりましたので削除

2019/04/30 09:42

投稿

jimbe
jimbe

スコア13352

answer CHANGED
@@ -1,26 +1,4 @@
1
1
  最後の2重forループでは,
2
2
  ・内側ループは, 一致もしくは大きくなったら break 出来るはず.
3
3
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
4
- と想像します.
4
+ と想像します.
5
-
6
- 全体を直すとこんな感じになるでしょうか.
7
- 小さい方の値を大きい方以上か -1 になるまで取り続けた後, -1 だったのか一致だったのかを判定しています.
8
- ```C
9
- int main(int argc, char *argv[]){
10
- int fv, gv, ans=0;
11
- long long int n;
12
-
13
- scanf("%llu", &n);
14
- setfg(n);
15
- while(1) {
16
- fv = f();
17
- gv = g();
18
- while(fv < gv && fv != -1) fv = f();
19
- while(fv > gv && gv != -1) gv = g();
20
- if(fv == -1 || gv == -1) break;
21
- if(fv == gv) ans++;
22
- }
23
- printf("%d\n", ans);
24
- return 0;
25
- }
26
- ```

1

コード追加

2019/04/30 09:35

投稿

jimbe
jimbe

スコア13352

answer CHANGED
@@ -1,4 +1,26 @@
1
1
  最後の2重forループでは,
2
2
  ・内側ループは, 一致もしくは大きくなったら break 出来るはず.
3
3
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
4
- と想像します.
4
+ と想像します.
5
+
6
+ 全体を直すとこんな感じになるでしょうか.
7
+ 小さい方の値を大きい方以上か -1 になるまで取り続けた後, -1 だったのか一致だったのかを判定しています.
8
+ ```C
9
+ int main(int argc, char *argv[]){
10
+ int fv, gv, ans=0;
11
+ long long int n;
12
+
13
+ scanf("%llu", &n);
14
+ setfg(n);
15
+ while(1) {
16
+ fv = f();
17
+ gv = g();
18
+ while(fv < gv && fv != -1) fv = f();
19
+ while(fv > gv && gv != -1) gv = g();
20
+ if(fv == -1 || gv == -1) break;
21
+ if(fv == gv) ans++;
22
+ }
23
+ printf("%d\n", ans);
24
+ return 0;
25
+ }
26
+ ```