解题思路:
不用分类讨论直接暴力求值的方法.
注意事项:
我们观察到小的数据范围是对大的数据范围没有影响的.
于是我们考虑每次处理一段,然后吧这段删了.
至于如果删过了,那就break掉就好了.
参考代码:
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
cin>>a;
if(a>0)b+=(a<100000?a:100000)*0.100,a-=100000;
if(a>0)b+=(a<100000?a:100000)*0.075,a-=100000;
if(a>0)b+=(a<200000?a:200000)*0.050,a-=200000;
if(a>0)b+=(a<200000?a:200000)*0.030,a-=200000;
if(a>0)b+=(a<400000?a:400000)*0.015,a-=400000;
if(a>0)b+=a*0.010;cout<<b;
return 0;
}
0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
你这个方法太好了,相比我这个拿if进行判断好太多了QAQ. #include<iostream> using namespace std; int main() { int l,n; cin>>l; if(l<=100000) { n=l*0.1; cout<< n<<endl; } else if(l>100000&&l<=200000) { n=100000*0.1+(l-100000)*0.075; cout <<n <<endl; } else if(l>200000&&l<=400000) { n=100000*0.1+100000*0.075+(l-200000)*0.05; cout <<n<<endl; } else if(l>400000&&l<=600000) { n=100000*0.1+100000*0.075+200000*0.05+(l-400000)*0.03; cout <<n<<endl; } else if(l>600000&&l<=1000000) { n=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(l-600000)*0.015; cout <<n<<endl; } else { n=100000*0.1