有问题的。
```c++
if(b%a1!=0) a1=b/a1,a1+=1,c1*=a1;
else a1=b/a1; c1*=a1;
if(b%a2!=0) a2=b/a2,a2+=1,c2*=a2;
else a2=b/a2; c2*=a2;
if(b%a3!=0) a3=b/a3,a3+=1,c3*=a3;
else a3=b/a3,c3*=a3;
```
但是这个也是过不去的。95分。
---
分析:
```c++
if(b%a1!=0) a1=b/a1,a1+=1,c1*=a1;
else a1=b/a1; c1*=a1;
```
if判断条件为b%a1!=0.
若此判断条件正确,则进入第一个if,在第一个if更改了a1的值,更新完c1值后退出第一个if。再运行判断条件b%a1==0,但此时a1值被更改,于是很可能else也进去!
所以if尽量不要更改变量的值。
正确代码:
```c++
#include<bits/stdc++.h>
using namespace std;
int main(){
int b,i=0,a1,c1,a2,c2,a3,c3;
cin>>b>>a1>>c1>>a2>>c2>>a3>>c3;
if(b%a1!=0) c1=(b/a1+1)*c1;
else c1=(b/a1)*c1;
if(b%a2!=0) c2=(b/a2+1)*c2;
else c2=(b/a2)*c2;
if(b%a3!=0) c3=(b/a3+1)*c3;
else c3=(b/a3)*c3;
cout<<min(c1,min(c2,c3));
return 0;
}
```
by stOtue @ 2023-07-30 18:41:51
@[123uuu](/user/539712)
by stOtue @ 2023-07-30 18:47:03
@[stOtue](/user/411727)
谢谢
by 123uuu @ 2023-07-30 19:16:24
@[123uuu](/user/539712) 亦可如下,规避if:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b,c,minn=2147483647;
cin >> n;
for (int i = 0; i < 3; i++){
cin >> a >> b;
c = n % a == 0 ? n / a * b : (n / a + 1) * b;
minn=min(minn,c);
}
cout << minn;
return 0;
}
```
by mlemtion @ 2023-08-07 23:55:06