解题思路:

    不用分类讨论直接暴力求值的方法.

注意事项:

    我们观察到小的数据范围是对大的数据范围没有影响的.

    于是我们考虑每次处理一段,然后吧这段删了.

    至于如果删过了,那就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;

    }

点赞(1)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

牧乔 3年前 回复TA
强者的思路
AkMoney 3年前 回复TA
@AkMoney n=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(l-1000000)*0.01; 		cout <<n<<endl; 	} }
AkMoney 3年前 回复TA
你这个方法太好了,相比我这个拿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