问题标题: 酷町堂:1102 聪聪买书 95分,求解!

0
0
已解决
吴宇轩
吴宇轩
初级守护
初级守护

1102   聪聪买书

题目描述 Description

圣诞节快到了,聪聪准备给他的好朋友们买些小礼物。当然,聪聪知道这些好朋友们都非常喜欢看漫画书,所以,聪聪就决定买些好看的漫画书送给他们。经过一段时间的调查,聪聪发现有3种买书的方式:
1 .书店现场购买:10元/本,超过5本以外的,8元/本,超过10本以外的,则6.5元/本;
2.网上购买:9元/本,超过10本,全部打8折,超过50本,则全部打六折;
3.团购:10本起团购,7元/本,达到或超过30本,则6元/本,达到或超过50本,则5元/本。
聪聪想用其中一种方式购n本书,请你帮他计算应付多少元钱?

输入描述 Input Description

输入文件只有1行为两个数k和n,中间以一个空格隔开
其中k表示选择的购买方式(k=1表示书店现场购买,k=2表示网上购买,k=3表示团购),n表示购买的本数(n<=200)。

输出描述 Output Description

应付钱数(结果四舍五入保留到个位)

样例输入 Sample Input

1 11

样例输出 Sample Output

97

 

 

95分代码:

#include<bits/stdc++.h>
using namespace std;
int k,n;
double yuan;
int main(){
    cin>>k>>n;
    if(k==1){
        if(n<=5)yuan=n*10;
        else if(n<=10)yuan=5*10+(n-5)*8;
        else yuan=5*10+(10-5)*8+(n-10)*6.5;
    }
    if(k==2){
        if(n<=10)yuan=n*9;
        else if(n<=50)yuan=n*9*0.8;
        else yuan=n*9*0.6;
    }
    if(k==3){
        if(n<=30)yuan=7*n;
        else if(n<=50)yuan=n*6;
        else yuan=n*5;
    }
    cout<<int(yuan+0.5);
    return 0;
}

错了一个测试点,求解!


0
已采纳
周琪岳
周琪岳
资深光能
资深光能

注意,团购是10本起团购的,而你的并没有判断团购是n是否>=10

0
汪恺恒
汪恺恒
中级启示者
中级启示者

因为十本起团购,所以你要特判

0
鹿雨扬
鹿雨扬
资深守护
资深守护

int k,n; int main(){ double ans; cin>>k; cin>>n; if(k==1) { if(n<=5) ans=10*n; else if(n>=6 && n<=10) ans=5*10+(n-5)*8; else if(n>10) ans=5*10+(10-5)*8+(n-10)*6.5; } else if(k==2){ if(n<=10) ans=9*n; else if(n<=50) ans=7.2*n; else ans=5.4*n; } else if(k==3){ if(n>=10 && n<30) ans=7*n; else if(n<50) ans=6*n; else ans=5*n; } cout<<int(ans+0.5);

核心,拜托采纳

我要回答