题目:
? ?请输入一个数N (范围忘了,请谅解),并且求出在N范围内满足N的倒数(例如:输入数:1230,倒数为321)M,两数之和在[100000,200000]最小值的N。
列如:
输入:123456
输出:123450
这是比赛当天晚上写出来的,如果有错,请谅解一下哈
如果有更好的算法,可以评论区留言,大家相互学习一下,我也是刚刚开始学习数据结构与算法;
希望我写的算法对你有帮助,如果对你有帮助,请点赞一下,感谢支持!!!
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int shu = in.nextInt();
int huan = shu;//中间变量,避免原值被改变
for(int jj =huan;jj>0;jj--) {//输入值,减减循环,找出所求的值
boolean f = true;
int zhi = 0;//输入数的位数的指针
int fan = 0;//输入数的倒数的变量,并初始化为0
int pan = jj;//中间变量,避免原值被改变
while (f) {//利用while循环,得出输入值的位数
pan = pan / 10;
if (pan < 1) {
f = false;
}
zhi++;
}
int chu = 0;//输入数的除于变量,并初始化为0
for (int i = zhi; i > 0; i--) {
int shuu = jj;
chu = 0;
for (int j = zhi; j > i; j--) {
shuu = shuu / 10;//得到对应输入数的位数的指针上的数
}
chu = (int) shuu % 10;//得到对应输入数的位数的指针上的余数
for (int k = 0; k < i - 1; k++) {
chu = chu * 10;//得到对应输入数的位数的指针上的计数
}
fan += chu;//倒数的相加,得到最终的倒数
}
int zong = fan + jj;//输入的数,与对于倒数的和
if (zong > 100000 && zong < 200000) {
System.out.println(jj);
break;
} else if (jj<10000){
System.out.println("F");
}
}
}
|