题目分析:
- 输入的数字都是正整数,并且我们输入的数字的范围超出了int型,所以我们使用long型。
- 单纯暴力解法:每输入一个数据,在范围之前的数据全部都已经加好,再由count将所有的数据相加,最后输出count即可
- 有一种改进方法,就是把数据变小好运算,就是在c里面用define将后面的0都存进去,也就是自己命名一个m = 100000,后续的20000 = 2 * m;这样对运算和代码简洁有帮助(没有贴这种代码,我写的是Java法)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long i = scan.nextLong();
System.out.println(account(i));
}
public static long account(long i) {
long count = 0;
if(i <= 100000) {
count = (long) ((long)i * 0.1);
}else if(i <= 200000) {
count = (long)(100000*0.1 + (i-100000)*0.075);
}else if(i <= 400000) {
count = (long)(100000*(0.1+0.075) + (i-200000)*0.05);
}else if(i <= 600000) {
count = (long)(100000*(0.1+0.075) + 200000*0.05 + (i-400000)*0.03);
}else if(i <= 1000000) {
count = (long)(100000*(0.1+0.075) + 200000*0.05 + 200000*0.03 +(i-600000)*0.015);
}else if(i > 1000000) {
count = (long)(100000*(0.1+0.075) + 200000*0.05 + 200000*0.03 +400000*0.015 +(i-1000000)*0.001);
}
return count;
}
这个题目其实蛮简单的,就是数据有点大,搞得繁琐又烦人