【题目链接】
ybt 1052:计算邮资
OpenJudge NOI 1.4 14:计算邮资
【题目考点】
1. if…else语句
【解题思路】
设邮件总重为w克,需要邮资r元
1000克以内收基本费8元
- 无论发多重的邮件,基本费都要出的。可以将r的初始值设为8
超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算
- 如果
w
>
1000
w>1000
w>1000,则超出1000克的重量为:
w
−
1000
w-1000
w−1000,总收费为
4
⋅
⌈
w
−
1000
500
⌉
4\cdot\lceil \frac{w-1000}{500} \rceil
4⋅⌈500w−1000⌉,所以有:
r += ceil((w-1000)/500)*4;
如果用户选择加急,多收5元。
- 这种情况下,有
r += 5;
【题解代码】
写法1:使用ceil函数
#include<bits/stdc++.h>
using namespace std;
int main()
{
double w, r = 8;//w:重量 r:结果
char h;//是否加急
cin >> w >> h;
if(w > 1000)
r += ceil((w - 1000)/500)*4;
if(h == 'y')//如果加急
r += 5;
cout << r;
return 0;
}
写法2:使用取模运算判断能否整除
#include<bits/stdc++.h>
using namespace std;
int main()
{
int w, r = 8;//w:重量 r:结果
char h;//是否加急
cin >> w >> h;
if(w > 1000)
{
if((w-1000)%500 == 0)
r += (w-1000)/500*4;
else
r += ((w-1000)/500+1)*4;
}
if(h == 'y')//如果加急
r += 5;
cout << r;
return 0;
}