java经典算法-day8
哈喽,各位小伙伴们好,我是喵手。
一、前言
正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。
二、题目描述:
题目1:
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数sum?
题目2:
一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?
三、思路分析:
题1分析:
看到这题,也很像写数学题,对吧,高中数学题,算什么最大利润,但是这里是简单进行了梯度计算,用代码实现逻辑即可。也很简单,我就直接上代码了啊。
题2分析:
对于这题,首先教你们的就是利用for循环嵌套,既然没有定义范围,那就我们自己定义一个范围,找出在这个范围内中符合题意的数字即可,所以毫无悬念,直接for循环走起。
四、算法实现:
题1AC代码:
/**
* 计算发放奖金总数
*/
public static double lr(double lirun) {
//记录应发放的奖金
double sum = 0;
if (lirun <= 10) {
sum = lirun * 0.1;
} else if (lirun <= 20) {
sum = 10 * 0.1 + (lirun - 10) * 0.075;
} else if (lirun <= 40) {
sum = 10 * 0.1 + 10 * 0.075 + (lirun - 20) * 0.05;
} else if (lirun <= 60) {
sum = 10 * 0.1 + 10 * 0.075 + 10 * 0.05 + (lirun - 40) * 0.03;
} else if (lirun <= 100) {
sum = 10 * 0.1 + 10 * 0.075 + 10 * 0.05 + 10 * 0.03 + (lirun - 60) * 0.015;
} else {
sum = 10 * 0.1 + 10 * 0.075 + 10 * 0.05 + 10 * 0.03 + 10 * 0.015 + (lirun - 100) * 0.01;
}
return sum;
}
题2AC代码:
我们先定义一个从1-10000的for循环体,接着就是将num1、num2进行数据类型定义,最后只需要判断,两值是否为整数即可。
/**
* 在1-100000内,它加上100后是一个完全平方数,加上168又是一个完全平方数
*/
public static void getNum() {
double num1, num2;
for (int i = 1; i <= 10000; i++) {
num1 = Math.sqrt((i + 100));
num2 = Math.sqrt((i + 100 + 168));
//判断num1、num2是否为整数。
if (num1 == (int) num1 && num2 == (int) num2) {
System.out.println(i);
}
}
}
五、总结:
综上,第一道题毫无悬念,就是一道存数学判断题,只需要将不同的判断条件枚举出来,然后不同的枚举条件返回不同的计算公式。第二道就是读题写逻辑,很简单啊,单纯就是通过代码来实现求未知数的题。
如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。
六、文末:
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
wished for you successed !!!
---------------------------------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
---------------------------------------------------------------------
- 点赞
- 收藏
- 关注作者
评论(0)