1102 聪聪买书
经验值:400 时间限制:1000毫秒
合肥市第28届信息学竞赛
不许抄袭,一旦发现,直接清空经验!
题目描述 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
错误代码:
#include<bits/stdc++.h>
using namespace std;
long long a,b;
double sum;
int main(){
cin>>a>>b;
if(a==1){
while(b!=0){
if(b>10){
sum+=(b*6.5);
}else if(b>5&&b<=10){
sum+=(b*8);
}else if(b<=5){
sum+=(b*10);
}
b--;
}
}else if(a==2){
if(b<=10){
sum+=(b*9);
}
if(b>10&&b<=50){
sum+=((b*9)*0.8);
}
if(b>50){
sum+=((b*9)*0.6);
}
}else if(a==3){
if(b>=10){
if(b>=10&&b<30){
sum+=(b*7);
}else if(b>=30&&b<50){
sum+=(b*6);
}else{
sum+=(b*5);
}
}
}
cout<<(int)(sum+0.5);
return 0;
}
发核心的,分段!!!
cin>>k>>n;
if(k==1){
if(n<=5){
sum=n*10;
}else if(n<=10){
sum=50+(n-5)*8;
}else{
sum=90+(n-10)*6.5;
}
}else if(k==2){
if(n<=10){
sum=n*9;
}else if(n<=50){
sum=9*0.8*n;
}else{
sum=9*0.6*n;
}
}else{
if(n>=10&&n<30){
sum=7*n;;
}else if(n<50){
sum=6*n;
}else{
sum=5*n;
}
}
cout<<(int)(sum+0.5);
分段计费,不用这个样子,用sum统计即可AC。
核心:
if(k==1)
{
if(n<=5) sum=10*n;
else if(n<=10) sum=10*5+8*(n-5);
else sum=10*5+8*5+6.5*(n-10);
}
else if(k==2)
{
if(n<=10) sum=9*n;
else if(n<=50) sum=9*n*0.8;
else sum=9*n*0.6;
}
else
{
if(n<30) sum=7*n;
else if(n<50) sum=6*n;
else sum=5*n;
}
if((sum-(int)sum)<0.5) cout<<(int)sum;
else cout<<(int)(sum+1);
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);
核心
- cin>>k>>n;
- if(k==1){
- if(n<=5){
- c=n*10;
- } else if(n<=10){
- c=50+(n-5)*8;
- } else if(n>10){
- c=90+(n-10)*6.5;
- }
- } if(k==2){
- if(n<=10){
- c=n*9;
- } else if(n<=50){
- c=n*7.2;
- } else if(n>50){
- c=n*5.4;
- }
- } if(k==3){ i
- f(n<=29){
- c=n*7;
- } else if(n<=49){
- c=n*6;
- } else if(n>50){
- c=n*5;
- }
- }
- cout<<(int)(c+0.5);
cin>>k>>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);
