回答編集履歴

3

コード再追加

2019/04/30 09:42

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -5,3 +5,51 @@
5
5
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
6
6
 
7
7
  と想像します.
8
+
9
+
10
+
11
+ これであってますでしょうか.
12
+
13
+ ```C
14
+
15
+ int main(int argc, char *argv[]){
16
+
17
+ int fv, gv, ans=0;
18
+
19
+ long long int n;
20
+
21
+
22
+
23
+ scanf("%llu", &n);
24
+
25
+ setfg(n);
26
+
27
+
28
+
29
+ while(1) {
30
+
31
+ fv = f();
32
+
33
+ gv = g();
34
+
35
+ while(fv != -1 && gv != -1 && fv != gv) {
36
+
37
+ if(fv < gv) fv = f();
38
+
39
+ if(fv > gv) gv = g();
40
+
41
+ }
42
+
43
+ if(fv == -1 || gv == -1) break;
44
+
45
+ ans++;
46
+
47
+ }
48
+
49
+ printf("%d\n", ans);
50
+
51
+ return 0;
52
+
53
+ }
54
+
55
+ ```

2

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

2019/04/30 09:42

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -5,47 +5,3 @@
5
5
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
6
6
 
7
7
  と想像します.
8
-
9
-
10
-
11
- 全体を直すとこんな感じになるでしょうか.
12
-
13
- 小さい方の値を大きい方以上か -1 になるまで取り続けた後, -1 だったのか一致だったのかを判定しています.
14
-
15
- ```C
16
-
17
- int main(int argc, char *argv[]){
18
-
19
- int fv, gv, ans=0;
20
-
21
- long long int n;
22
-
23
-
24
-
25
- scanf("%llu", &n);
26
-
27
- setfg(n);
28
-
29
- while(1) {
30
-
31
- fv = f();
32
-
33
- gv = g();
34
-
35
- while(fv < gv && fv != -1) fv = f();
36
-
37
- while(fv > gv && gv != -1) gv = g();
38
-
39
- if(fv == -1 || gv == -1) break;
40
-
41
- if(fv == gv) ans++;
42
-
43
- }
44
-
45
- printf("%d\n", ans);
46
-
47
- return 0;
48
-
49
- }
50
-
51
- ```

1

コード追加

2019/04/30 09:35

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -5,3 +5,47 @@
5
5
  ・外側ループが回るとき, 内側ループの開始は前回の内側ループの break 時の値からで良いはず.
6
6
 
7
7
  と想像します.
8
+
9
+
10
+
11
+ 全体を直すとこんな感じになるでしょうか.
12
+
13
+ 小さい方の値を大きい方以上か -1 になるまで取り続けた後, -1 だったのか一致だったのかを判定しています.
14
+
15
+ ```C
16
+
17
+ int main(int argc, char *argv[]){
18
+
19
+ int fv, gv, ans=0;
20
+
21
+ long long int n;
22
+
23
+
24
+
25
+ scanf("%llu", &n);
26
+
27
+ setfg(n);
28
+
29
+ while(1) {
30
+
31
+ fv = f();
32
+
33
+ gv = g();
34
+
35
+ while(fv < gv && fv != -1) fv = f();
36
+
37
+ while(fv > gv && gv != -1) gv = g();
38
+
39
+ if(fv == -1 || gv == -1) break;
40
+
41
+ if(fv == gv) ans++;
42
+
43
+ }
44
+
45
+ printf("%d\n", ans);
46
+
47
+ return 0;
48
+
49
+ }
50
+
51
+ ```