質問編集履歴

1

追記質問

2018/05/06 14:55

投稿

python3_beginer
python3_beginer

スコア46

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,22 @@
28
28
 
29
29
 
30
30
 
31
+ 条件
32
+
33
+ すべてのテストケースにおいて、以下の条件をみたします。
34
+
35
+
36
+
37
+ ・1 ≦ S ≦ 1,000,000
38
+
39
+ ・1 ≦ a, b ≦ 1,000,000
40
+
41
+ ・a ≧ S + 10  ・すなわち、 風呂A には必ず 1 回以上水を行われる。
42
+
43
+
44
+
45
+
46
+
31
47
 
32
48
 
33
49
  以下のルールに従って、水を貯めていく。
@@ -258,6 +274,138 @@
258
274
 
259
275
 
260
276
 
261
-
262
-
263
277
  ```
278
+
279
+
280
+
281
+ #追記質問
282
+
283
+
284
+
285
+ 配列ではなく、while構文を利用するようにとアドバイスをいただきました。
286
+
287
+
288
+
289
+ A、B それぞれにwhile構文を使い、それぞれの浴槽の水が溢れる直前に入れた水の量を表示できた。
290
+
291
+
292
+
293
+ しかし、ルール上にあるように交互に入れた際の、勝った相手のみ表示させたい。
294
+
295
+
296
+
297
+ 二つの条件を合わせたwhile文が書けません。
298
+
299
+
300
+
301
+ アドバイス等頂きたいです。
302
+
303
+
304
+
305
+ #追記条件
306
+
307
+
308
+
309
+
310
+
311
+ 加えて、入力値の条件を追記しました。
312
+
313
+
314
+
315
+
316
+
317
+ 入力値
318
+
319
+
320
+
321
+ s, a, b
322
+
323
+
324
+
325
+
326
+
327
+ 条件
328
+
329
+ すべてのテストケースにおいて、以下の条件をみたします。
330
+
331
+
332
+
333
+ ・1 ≦ S ≦ 1,000,000
334
+
335
+ ・1 ≦ a, b ≦ 1,000,000
336
+
337
+ ・a ≧ S + 10  ・すなわち、 風呂A には必ず 1 回以上水を行われる。
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+ ```ここに言語を入力
348
+
349
+ コード
350
+
351
+
352
+
353
+ s,a,b = map(int, input().split())
354
+
355
+ print(s,a,b)
356
+
357
+
358
+
359
+ #Aの一回目
360
+
361
+ water_a = s+10
362
+
363
+ #Bの一回目
364
+
365
+ water_b = s+1010
366
+
367
+
368
+
369
+
370
+
371
+ #Bの一回目が限界値を越えていたら、Aの勝利
372
+
373
+ if water_b > b:
374
+
375
+ print("A" + " " + water_a)
376
+
377
+ #上記以降は交互に入れる
378
+
379
+ else:
380
+
381
+ while water_a < a:
382
+
383
+ water_a += 1010
384
+
385
+ print(water_a)
386
+
387
+ break
388
+
389
+ #Bの一回目はクリアしたため、順次 1010リットルずつ足していく
390
+
391
+ while water_b < b:
392
+
393
+ water_b += 1010
394
+
395
+ print(water_b)
396
+
397
+ break
398
+
399
+
400
+
401
+ #出力値
402
+
403
+ 1021
404
+
405
+ 2021
406
+
407
+
408
+
409
+
410
+
411
+ ```