1041 : 計(jì)算郵資

描述
根據(jù)郵件的重量和用戶是否選擇加急計(jì)算郵費(fèi)。計(jì)算規(guī)則:重量在1000克以內(nèi)(包括1000克), 基本費(fèi)8元。超過1000克的部分,每500克加收超重費(fèi)4元,不足500克部分按500克計(jì)算;如果用戶選擇加急,多收5元。
輸入描述
輸入一行,包含整數(shù)和一個字符,以一個空格分開,分別表示重量(單位為克)和是否加急。如果字符是y,說明選擇加急;如果字符是n,說明不加急。
輸出描述
輸出一行,包含一個整數(shù),表示郵費(fèi)。
用例輸入 1?
1200 y
用例輸出 1?
17
代碼:
#include <iostream>
#include <cmath>
using namespace std;
?
bool decide(int x);
bool decide(int x) {//用來判斷是否為整數(shù)
????double result = log(x) / log(3);
????if (result == (int)result)
????{
????????return true;//返回true
????}
????else
????{
????????return false;//返回false
????}
}
int main()
{
????int x = 0, sum = 8, a = 0;//x為重量,sum為最后的錢數(shù),sum默認(rèn)為1000克以下的8元
????double b = 0;
?????char y = 0;//是否加急
?????cin >> x >> y;
? ????if (x > 1000) {
????????a = x - 1000;
????????}
????????if (a <= 500) {
????????????sum += 4;
????????}
????????else {
????????????b = a / 500 * 1.0;
????????????if (decide(b)) {//判斷b是否為整數(shù)
????????????sum += (4 * b);//是整數(shù)
????????}
????????else {
????????????????sum += (4 * (int)b) + 1;//不是整數(shù),因?yàn)镃++在面對小數(shù)時會舍掉小數(shù),題目說不滿? ? ? ? ? ? ? ? ? ? ? 500克算500克,所以+1
????????????}
????????}
????}
????if (y == 'y') {
????????sum += 5;//如果加急加5元
????}
????????cout << sum;//輸出錢數(shù)
????????return 0;
}