質問編集履歴

3

コード

2020/05/21 03:33

投稿

langhtorn
langhtorn

スコア105

test CHANGED
File without changes
test CHANGED
@@ -14,17 +14,15 @@
14
14
 
15
15
  ```
16
16
 
17
- ###可能性としては、、
17
+ ###追記5/21
18
+
19
+ 私なりにいただいた助言をもとに考えなおしてみました。でもうまくいかないです。
18
20
 
19
21
  ```
20
22
 
21
- std::atoi
22
-
23
- を習っばかりなであま使方がよっていない
23
+ やりいこととしては、まずargc[1]とargc[2]最大公約数を求めて、その答えとargc[3]の最大公約数を求めるというのをどんどん繰返していく、、、というんじです
24
24
 
25
25
  ```
26
-
27
-
28
26
 
29
27
  ###コード
30
28
 
@@ -40,21 +38,43 @@
40
38
 
41
39
  int maxk=0;
42
40
 
43
- int i;
41
+ int ans=0;
44
42
 
45
- for(i=std::atoi(argv[1]);i>0;i--){
43
+ int i,j,k;
46
44
 
47
- if(std::atoi(argv[i])%i==0){
45
+ for(i=1;i<argc;i++){
48
46
 
49
- if(std::atoi(argv[i+1])%i==0){
47
+ for(j=std::atoi(argv[i]);j>0;j--){
50
48
 
49
+ if(std::atoi(argv[i])%j==0){
50
+
51
+ if(std::atoi(argv[i+1])%j==0){
52
+
51
- maxk=i;
53
+ ans=j;
52
54
 
53
55
  break;
54
56
 
55
57
  }
56
58
 
57
59
  }
60
+
61
+ for(k=ans;k>0;k--){
62
+
63
+ if(ans%k==0){
64
+
65
+ if(std::atoi(argv[i+2])%k==0){
66
+
67
+ maxk=k;
68
+
69
+ break;
70
+
71
+ }
72
+
73
+ }
74
+
75
+ }
76
+
77
+ }
58
78
 
59
79
  }
60
80
 

2

2020/05/21 03:33

投稿

langhtorn
langhtorn

スコア105

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,8 @@
7
7
  ```
8
8
 
9
9
  最大公約数が違う答えになる。
10
+
11
+ ./kadai09 40 45 50
10
12
 
11
13
  "最大公約数は0"
12
14
 
@@ -40,7 +42,7 @@
40
42
 
41
43
  int i;
42
44
 
43
- for(i=std::atoi(argv[0]);i>0;i--){
45
+ for(i=std::atoi(argv[1]);i>0;i--){
44
46
 
45
47
  if(std::atoi(argv[i])%i==0){
46
48
 

1

コードの修正

2020/05/20 15:56

投稿

langhtorn
langhtorn

スコア105

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,8 @@
58
58
 
59
59
  std::cout<<"最大公約数は"<<maxk<<"\n";
60
60
 
61
+ return 0;
62
+
61
63
  }
62
64
 
63
65
  ```