質問編集履歴

4

言語の指定をミスしてました

2021/06/09 10:52

投稿

9nahito
9nahito

スコア45

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  yosukesan さんの コード
90
90
 
91
- ```HTML
91
+ ```Python
92
92
 
93
93
  #すべての整数を割ってから処理した回数カウントを増やしていく方法は
94
94
 

3

説明の訂正

2021/06/09 10:52

投稿

9nahito
9nahito

スコア45

test CHANGED
File without changes
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  使わせてもらった yosukesan さんのコードに自分用とこれからこれを見る人がいるかもなので
86
86
 
87
- 解説を付け加えました。
87
+ 解説を増やしました。
88
88
 
89
89
  yosukesan さんの コード
90
90
 

2

正しいコードを教えてもらったので追記しました

2021/06/09 10:51

投稿

9nahito
9nahito

スコア45

test CHANGED
File without changes
test CHANGED
@@ -77,3 +77,87 @@
77
77
  どこが間違ってるかどうしても分かりません。
78
78
 
79
79
  回答よろしくお願いします<m(__)m>
80
+
81
+
82
+
83
+ 解決後追記--
84
+
85
+ 使わせてもらった yosukesan さんのコードに自分用とこれからこれを見る人がいるかもなので
86
+
87
+ 解説を付け加えました。
88
+
89
+ yosukesan さんの コード
90
+
91
+ ```HTML
92
+
93
+ #すべての整数を割ってから処理した回数カウントを増やしていく方法は
94
+
95
+ #自分では出来なかったのでそれぞれの整数を何回割れるかカウント(c1)して
96
+
97
+ #それらのカウントの最小値を求めることで答えを出す
98
+
99
+ #teratail で修正してもらいました
100
+
101
+
102
+
103
+ n = int(input())
104
+
105
+ a = list(map(int,input().split()))
106
+
107
+
108
+
109
+ c1 = 0#処理の回数
110
+
111
+ c2 = 0#最初に偶数がいくつあるか
112
+
113
+ a2 = 0#偶奇を判断するための変数
114
+
115
+ ans = 0#俺の好きな9
116
+
117
+
118
+
119
+ for a3 in a:#a3に一つずつaの要素が代入される
120
+
121
+ a2 = a3 % 2
122
+
123
+ if a2 == 0:
124
+
125
+ c2 += 1#tが入っていた
126
+
127
+
128
+
129
+ stop = True
130
+
131
+ if c2 == n:#最初の数がすべて偶数だったら
132
+
133
+ while stop == True:#== Trueは省略可能
134
+
135
+ for i in range(0, len(a)):
136
+
137
+ if a[i]%2 == 0:#偶奇
138
+
139
+ a[i] /= 2#÷2
140
+
141
+ else:#奇数
142
+
143
+ stop = False
144
+
145
+ ans += 1 #全ての要素が偶数なのを確認したので、カウント+1
146
+
147
+
148
+
149
+ else:
150
+
151
+ ans = 0#最初の整数がすべて偶数じゃなかったら
152
+
153
+
154
+
155
+ print(max(ans-1,0))#26行 stop = False になってもその下に ans += 1があるので
156
+
157
+ #奇数が出ても一度 ans += 1 されるので 出力するときに -1
158
+
159
+
160
+
161
+ #max() で 最大値を出してるのは 奇数だったら ans = 0 なので 出力結果が -1 になってしまうのを防ぐため
162
+
163
+ ```

1

コードを改善しました!

2021/06/09 10:50

投稿

9nahito
9nahito

スコア45

test CHANGED
File without changes
test CHANGED
@@ -2,49 +2,69 @@
2
2
 
3
3
  下のコードをPythonで書いて提出したのですが正解になりません。
4
4
 
5
- エラーもでないです。
6
5
 
6
+
7
+ コードをかなり改善してsampleは全部正解になったのですがまだ不正解の部分が残ってしまいます..
8
+
7
- ![![イメージ説明](d755f52b96407d38d02201dc13ddb6aa.png)](69033e29056f727cce2e2cdd44b63fc8.png)
9
+ ![イメージ説明](21baa2d50bce87c9132121444494b45f.png)
8
10
 
9
11
  ```python
10
12
 
11
- N = int(input())
13
+ #すべての整数を割ってから処理した回数カウントを増やしていく方法は
12
14
 
13
- b = list(map(int,input().split()))
15
+ #自分では出来なかったのでそれぞれの整数を何回割れるかカウント(c1)して
16
+
17
+ #それらのカウントの最小値を求めることで答えを出す
14
18
 
15
19
 
16
20
 
17
- c1 = 0#最初に偶数がいくつあるか調べる
21
+ n = int(input())
18
22
 
19
- c0 = 0#何回割ったかカウント
23
+ a = list(map(int,input().split()))
20
24
 
21
25
 
22
26
 
23
- #まず全部が偶数かしらべる
27
+ c1 = 0#処理
24
28
 
25
- for b1 in b:
29
+ c2 = 0#最初に偶数がいくつあるか
26
30
 
27
- b3 = b1 % 2
31
+ a2 = 0#偶奇を判断するための変数
28
32
 
29
- if b3 == 0:#偶数らカウントを追加する
33
+ ans = 999999#俺の好き9
30
-
31
- c1 += 1
32
34
 
33
35
 
34
36
 
35
- if c1 >= N:
37
+ for a3 in a:#a3に一つずつaの要素が代入される
36
38
 
37
- for b2 in b:
39
+ a2 = a3 % 2
38
40
 
39
- while b2 % 2 == 0:#あまりが0なら続ける
41
+ if a2 == 0:
40
42
 
41
- b2 /= 2#÷2
42
-
43
- c0 += 1#+1
43
+ c2 += 1
44
-
45
- print(c0)
46
44
 
47
45
 
46
+
47
+ if c2 == n:#最初の数がすべて偶数だったら
48
+
49
+ for a2 in a:
50
+
51
+ while a2%2 == 0:#偶奇
52
+
53
+ a2 /= 2#÷2
54
+
55
+ if a2%2 == 0:#割って偶数だったら
56
+
57
+ c1 += 1#処理回数のカウントを増やす
58
+
59
+ ans = min(ans,c1)#c1の最小値を出す
60
+
61
+ else:
62
+
63
+ ans = 0#最初の整数がすべて偶数じゃなかったら
64
+
65
+
66
+
67
+ print(ans)
48
68
 
49
69
  ```
50
70