質問編集履歴
4
具体化
test
CHANGED
File without changes
|
test
CHANGED
@@ -126,13 +126,13 @@
|
|
126
126
|
|
127
127
|
|
128
128
|
|
129
|
-
### 質問内容
|
129
|
+
### 質問内容(解決:下の追記に新たな問題点を書かせていただきました)
|
130
130
|
|
131
131
|
前の税率で税込み価格から税抜き価格になおすときに,その税込み価格になる最大の税抜き価格の計算がうまくいきません.どのように工夫すればうまくいくのか教えていただきたいです.よろしくお願いします.
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
### コード
|
135
|
+
### 旧コード
|
136
136
|
|
137
137
|
```C
|
138
138
|
|
3
問題の具体化
test
CHANGED
File without changes
|
test
CHANGED
@@ -122,45 +122,7 @@
|
|
122
122
|
|
123
123
|
|
124
124
|
|
125
|
-
|
125
|
+
|
126
|
-
|
127
|
-
以下の表に, 消費税率変更後に税込価格が最大となる税抜価格の組み合わせ例を, サンプル入力のデータセットごとに1つずつ示す.
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
データセット:税抜価格:消費税率 y% 時の税込価格
|
132
|
-
|
133
|
-
5 8 105 : 13, 88 : 14 + 95 = 109
|
134
|
-
|
135
|
-
8 5 105 : 12, 87 : 12 + 91 = 103
|
136
|
-
|
137
|
-
1 2 24 : 1, 23 : 1 + 23 = 24
|
138
|
-
|
139
|
-
99 98 24 : 1, 12 : 1 + 23 = 24
|
140
|
-
|
141
|
-
12 13 26 : 1, 23 : 1 + 25 = 26
|
142
|
-
|
143
|
-
1 22 23 : 1, 22 : 1 + 26 = 27
|
144
|
-
|
145
|
-
1 13 201 : 1,199 : 1 +224 = 225
|
146
|
-
|
147
|
-
13 16 112 : 25, 75 : 29 + 87 = 116
|
148
|
-
|
149
|
-
2 24 50 : 25, 25 : 31 + 31 = 62
|
150
|
-
|
151
|
-
1 82 61 : 11, 50 : 20 + 91 = 111
|
152
|
-
|
153
|
-
1 84 125 : 50, 75 : 92 +138 = 230
|
154
|
-
|
155
|
-
1 99 999 : 92,899 : 183+1789 =1972
|
156
|
-
|
157
|
-
99 1 999 : 1,502 : 1 +507 = 508
|
158
|
-
|
159
|
-
98 99 999 : 5,500 : 9 +995 =1004
|
160
|
-
|
161
|
-
1 99 11 : 1, 10 : 1 + 19 = 20
|
162
|
-
|
163
|
-
99 1 12 : 1, 6 : 1 + 6 = 7
|
164
126
|
|
165
127
|
|
166
128
|
|
@@ -367,3 +329,187 @@
|
|
367
329
|
(199) 224
|
368
330
|
|
369
331
|
(99) 114
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
---------------------------------------------------------------------------------------------
|
336
|
+
|
337
|
+
#追記
|
338
|
+
|
339
|
+
### 現時点での問題点
|
340
|
+
|
341
|
+
大方の答えは一致するが,数値が小さい入力の際に答えより大きい結果が出てしまう場合がある.
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
### 再度書き直したコード
|
346
|
+
|
347
|
+
```C
|
348
|
+
|
349
|
+
#include<stdio.h>
|
350
|
+
|
351
|
+
#include<math.h>
|
352
|
+
|
353
|
+
int main(void){
|
354
|
+
|
355
|
+
int a,b,c,ans;
|
356
|
+
|
357
|
+
int cal,ori;
|
358
|
+
|
359
|
+
int p1max,p2max;
|
360
|
+
|
361
|
+
int q1max,q2max;
|
362
|
+
|
363
|
+
int i,j;
|
364
|
+
|
365
|
+
while(1){
|
366
|
+
|
367
|
+
scanf("%d %d %d",&a,&b,&c);
|
368
|
+
|
369
|
+
ans=0;
|
370
|
+
|
371
|
+
if(a==0&&b==0&&c==0) break;
|
372
|
+
|
373
|
+
for(i=1;i<=c;i++){
|
374
|
+
|
375
|
+
p1max=(i*100+99)/(100+a);
|
376
|
+
|
377
|
+
p2max=((c-i)*100+99)/(100+a);
|
378
|
+
|
379
|
+
q1max=p1max*(100+b)/100;
|
380
|
+
|
381
|
+
q2max=p2max*(100+b)/100;
|
382
|
+
|
383
|
+
if(ans<(q1max+q2max)) ans=q1max+q2max;
|
384
|
+
|
385
|
+
}
|
386
|
+
|
387
|
+
printf("%d\n",ans);
|
388
|
+
|
389
|
+
}
|
390
|
+
|
391
|
+
return 0;
|
392
|
+
|
393
|
+
}
|
394
|
+
|
395
|
+
```
|
396
|
+
|
397
|
+
*間違っている箇所を☆で表しました.
|
398
|
+
|
399
|
+
### 入力の一部
|
400
|
+
|
401
|
+
5 8 105
|
402
|
+
|
403
|
+
8 5 105
|
404
|
+
|
405
|
+
1 2 24
|
406
|
+
|
407
|
+
99 98 24
|
408
|
+
|
409
|
+
12 13 26
|
410
|
+
|
411
|
+
1 22 23
|
412
|
+
|
413
|
+
1 13 201
|
414
|
+
|
415
|
+
13 16 112
|
416
|
+
|
417
|
+
2 24 50
|
418
|
+
|
419
|
+
1 82 61
|
420
|
+
|
421
|
+
1 84 125
|
422
|
+
|
423
|
+
1 99 999
|
424
|
+
|
425
|
+
99 1 999
|
426
|
+
|
427
|
+
98 99 999
|
428
|
+
|
429
|
+
1 99 11 ☆
|
430
|
+
|
431
|
+
99 1 12
|
432
|
+
|
433
|
+
11 36 332
|
434
|
+
|
435
|
+
11 84 498
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
### 出力の一部
|
440
|
+
|
441
|
+
109
|
442
|
+
|
443
|
+
103
|
444
|
+
|
445
|
+
24
|
446
|
+
|
447
|
+
24
|
448
|
+
|
449
|
+
27
|
450
|
+
|
451
|
+
28
|
452
|
+
|
453
|
+
225
|
454
|
+
|
455
|
+
116
|
456
|
+
|
457
|
+
62
|
458
|
+
|
459
|
+
111
|
460
|
+
|
461
|
+
230
|
462
|
+
|
463
|
+
1972
|
464
|
+
|
465
|
+
508
|
466
|
+
|
467
|
+
1004
|
468
|
+
|
469
|
+
21
|
470
|
+
|
471
|
+
7
|
472
|
+
|
473
|
+
408
|
474
|
+
|
475
|
+
828
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
### 模範解答
|
480
|
+
|
481
|
+
109
|
482
|
+
|
483
|
+
103
|
484
|
+
|
485
|
+
24
|
486
|
+
|
487
|
+
24
|
488
|
+
|
489
|
+
26
|
490
|
+
|
491
|
+
27
|
492
|
+
|
493
|
+
225
|
494
|
+
|
495
|
+
116
|
496
|
+
|
497
|
+
62
|
498
|
+
|
499
|
+
111
|
500
|
+
|
501
|
+
230
|
502
|
+
|
503
|
+
1972
|
504
|
+
|
505
|
+
508
|
506
|
+
|
507
|
+
1004
|
508
|
+
|
509
|
+
20 ☆
|
510
|
+
|
511
|
+
7
|
512
|
+
|
513
|
+
408
|
514
|
+
|
515
|
+
828
|
2
ミスを直した
test
CHANGED
File without changes
|
test
CHANGED
@@ -350,7 +350,7 @@
|
|
350
350
|
|
351
351
|
|
352
352
|
|
353
|
-
出力 ()内は税抜き価格の最大値が表示されています.この中の値が正確に答えと一致しません.
|
353
|
+
出力 ()内は税が変わる前の税抜き価格の最大値が表示されています.この中の値が正確に答えと一致しません.
|
354
354
|
|
355
355
|
(100) 107
|
356
356
|
|
1
質問の具体化
test
CHANGED
File without changes
|
test
CHANGED
@@ -267,3 +267,103 @@
|
|
267
267
|
1.010000 202 (199) 224
|
268
268
|
|
269
269
|
0 0 0
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
------------------------------------------------------------------------------------------
|
274
|
+
|
275
|
+
### ご指摘いただいて書き直したコード(まだ正確なものは表示されない)
|
276
|
+
|
277
|
+
```C
|
278
|
+
|
279
|
+
#include<stdio.h>
|
280
|
+
|
281
|
+
#include<math.h>
|
282
|
+
|
283
|
+
int main(void){
|
284
|
+
|
285
|
+
int a[1000],b[1000],c[1000],ans;
|
286
|
+
|
287
|
+
int cal,ori;
|
288
|
+
|
289
|
+
int i=0;
|
290
|
+
|
291
|
+
while(1){
|
292
|
+
|
293
|
+
scanf("%d %d %d",&a[i],&b[i],&c[i]);
|
294
|
+
|
295
|
+
ans=0;
|
296
|
+
|
297
|
+
if(a[i]==0&&b[i]==0&&c[i]==0) break;
|
298
|
+
|
299
|
+
int j;
|
300
|
+
|
301
|
+
ori=(c[i]*100+99)/(100+a[i]);
|
302
|
+
|
303
|
+
printf("(%d) ",ori);
|
304
|
+
|
305
|
+
double postrate=1+(double)b[i]/100;
|
306
|
+
|
307
|
+
for(j=1;j<ori;j++){
|
308
|
+
|
309
|
+
if(j==1) ans=j*(double)(1+b[i]/100)+(ori-j)*postrate;
|
310
|
+
|
311
|
+
else if((cal=j*(double)(1+b[i]/100)+(ori-j)*postrate)<ans) break;
|
312
|
+
|
313
|
+
else if((cal=j*(double)(1+b[i]/100)+(ori-j)*postrate)>ans) ans=cal;
|
314
|
+
|
315
|
+
}
|
316
|
+
|
317
|
+
printf("%d\n",ans);
|
318
|
+
|
319
|
+
i++;
|
320
|
+
|
321
|
+
}
|
322
|
+
|
323
|
+
return 0;
|
324
|
+
|
325
|
+
}
|
326
|
+
|
327
|
+
```
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
### 実行結果
|
332
|
+
|
333
|
+
入力
|
334
|
+
|
335
|
+
5 8 105
|
336
|
+
|
337
|
+
8 5 105
|
338
|
+
|
339
|
+
1 2 24
|
340
|
+
|
341
|
+
99 98 24
|
342
|
+
|
343
|
+
12 13 26
|
344
|
+
|
345
|
+
1 22 23
|
346
|
+
|
347
|
+
1 13 201
|
348
|
+
|
349
|
+
13 16 112
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
出力 ()内は税抜き価格の最大値が表示されています.この中の値が正確に答えと一致しません.
|
354
|
+
|
355
|
+
(100) 107
|
356
|
+
|
357
|
+
(98) 102
|
358
|
+
|
359
|
+
(24) 24
|
360
|
+
|
361
|
+
(12) 22
|
362
|
+
|
363
|
+
(24) 26
|
364
|
+
|
365
|
+
(23) 27
|
366
|
+
|
367
|
+
(199) 224
|
368
|
+
|
369
|
+
(99) 114
|