回答編集履歴
3
追記の表現を正確にしました。
test
CHANGED
@@ -20,6 +20,6 @@
|
|
20
20
|
|
21
21
|
片方のピザを余らせた場合に値引きをしてしまっているからです。
|
22
22
|
|
23
|
-
もし```A!=B```なら、```numA-i```または```numB-i```が負になります。
|
23
|
+
もし```A!=B```なら、```numA-i```または```numB-i```が負になることがあります。
|
24
24
|
|
25
25
|
つまり、このコードだと余ったピザ分だけ値引きしていることになってしまいます。
|
2
なぜ質問のコードでACとならないかについて追記します。
test
CHANGED
@@ -11,3 +11,15 @@
|
|
11
11
|
Aを揃えるのに、```A>2C```ならBは無駄になってもCを```2*(max(X,Y)-min(X,Y))```枚買った方が安いです。
|
12
12
|
|
13
13
|
もし```A<2C```ならAを直接```max(X,Y)-min(X,Y)```枚買った方が安いです。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
--追記--
|
18
|
+
|
19
|
+
なぜ質問のコードでACとならないかについて追記します。
|
20
|
+
|
21
|
+
片方のピザを余らせた場合に値引きをしてしまっているからです。
|
22
|
+
|
23
|
+
もし```A!=B```なら、```numA-i```または```numB-i```が負になります。
|
24
|
+
|
25
|
+
つまり、このコードだと余ったピザ分だけ値引きしていることになってしまいます。
|
1
場合わけを詳しくしました
test
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
なぜそのコードで通らないかは分かりませんが、もう少しうまい場合分けができそうです。
|
2
2
|
|
3
|
-
```A+B<=2C```の時、ABのピザを買うメリットはないので、答えは```A*X+B*Y```
|
3
|
+
```A+B<=2C```の時、ABのピザを買うメリットはないので、答えは```A*X+B*Y```です。
|
4
4
|
|
5
|
-
```A+B>2C```の時、ABのピザを買えば買うほど安くなるので、
|
5
|
+
```A+B>2C```の時、ABのピザを買えば買うほど安くなるので、AがXを、BがYを超えない最大の```2 * min(X,Y)```枚買うとします。
|
6
|
+
|
7
|
+
さらに、XとY大きい方のピザを```max(X,Y)-min(X,Y)```枚を買う必要があります。
|
8
|
+
|
9
|
+
仮に、Xの方が大きかったとしましょう。
|
10
|
+
|
11
|
+
Aを揃えるのに、```A>2C```ならBは無駄になってもCを```2*(max(X,Y)-min(X,Y))```枚買った方が安いです。
|
12
|
+
|
13
|
+
もし```A<2C```ならAを直接```max(X,Y)-min(X,Y)```枚買った方が安いです。
|