回答編集履歴
3
コード再追加
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
コードにバグが見つかりましたので削除
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
コード追加
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
|
+
```
|