質問編集履歴
3
コード
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,12 +6,11 @@
|
|
6
6
|
./kadai09 40 45 50
|
7
7
|
"最大公約数は0"
|
8
8
|
```
|
9
|
-
###
|
9
|
+
###追記5/21
|
10
|
+
私なりにいただいた助言をもとに考えなおしてみました。でもうまくいかないです。
|
10
11
|
```
|
11
|
-
std::atoi
|
12
|
-
|
12
|
+
やりたいこととしては、まずargc[1]とargc[2]の最大公約数を求めて、その答えとargc[3]の最大公約数を求めるというのをどんどん繰り返していく、、、というかんじです。
|
13
13
|
```
|
14
|
-
|
15
14
|
###コード
|
16
15
|
```C++
|
17
16
|
#include<iostream>
|
@@ -19,15 +18,26 @@
|
|
19
18
|
int main(int argc,char* argv[])
|
20
19
|
{
|
21
20
|
int maxk=0;
|
21
|
+
int ans=0;
|
22
|
-
int i;
|
22
|
+
int i,j,k;
|
23
|
+
for(i=1;i<argc;i++){
|
23
|
-
|
24
|
+
for(j=std::atoi(argv[i]);j>0;j--){
|
24
|
-
if(std::atoi(argv[i])%
|
25
|
+
if(std::atoi(argv[i])%j==0){
|
25
|
-
if(std::atoi(argv[i+1])%
|
26
|
+
if(std::atoi(argv[i+1])%j==0){
|
26
|
-
|
27
|
+
ans=j;
|
27
28
|
break;
|
28
29
|
}
|
29
30
|
}
|
31
|
+
for(k=ans;k>0;k--){
|
32
|
+
if(ans%k==0){
|
33
|
+
if(std::atoi(argv[i+2])%k==0){
|
34
|
+
maxk=k;
|
35
|
+
break;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
30
39
|
}
|
40
|
+
}
|
31
41
|
std::cout<<"最大公約数は"<<maxk<<"\n";
|
32
42
|
return 0;
|
33
43
|
}
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
###問題点
|
4
4
|
```
|
5
5
|
最大公約数が違う答えになる。
|
6
|
+
./kadai09 40 45 50
|
6
7
|
"最大公約数は0"
|
7
8
|
```
|
8
9
|
###可能性としては、、
|
@@ -19,7 +20,7 @@
|
|
19
20
|
{
|
20
21
|
int maxk=0;
|
21
22
|
int i;
|
22
|
-
for(i=std::atoi(argv[
|
23
|
+
for(i=std::atoi(argv[1]);i>0;i--){
|
23
24
|
if(std::atoi(argv[i])%i==0){
|
24
25
|
if(std::atoi(argv[i+1])%i==0){
|
25
26
|
maxk=i;
|
1
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,5 +28,6 @@
|
|
28
28
|
}
|
29
29
|
}
|
30
30
|
std::cout<<"最大公約数は"<<maxk<<"\n";
|
31
|
+
return 0;
|
31
32
|
}
|
32
33
|
```
|