特俗的数字(水仙花数)
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
解题思路:
因为求的是三位数的水仙花数,所以写一个循环从100到999的,用if判断百位的立方加上十位的立方在加上个位的立方如果等于自己,则自己输出。
public class Main {
public static void main(String args[]) {
for(int i=100;i<=999;i++){
if((i/100)*(i/100)*(i/100)+(i%10)*(i%10)*(i%10)+(i/10%10)*(i/10%10)*(i/10%10)==i)
System.out.println(i);
}
}
}
回文数
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
解题思路:
因为是4位数,要求从左边读和从右边读是一样的,所以判断十位是否等于百位并且个位是否等于千位,如果满足条件直接输出即可。
public class Main {
public static void main(String args[]) {
for(int i=1000;i<=9999;i++){
if(i/1000==i%10&&i/10%10==i/100%10)
System.out.println(i);
}
}
}
特殊回文数
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
解题思路:
由题可知取数范围为10000到999999,因此做一个循环从10000到999999,由于位数较多,直接求个位十位等比较麻烦,所以我直接把整数转化为char数组方便其中求回文数,以及比较是否和我们输入的数相等(其中在相加时记得减去字符0再将char转int,以及最后将和清0)。
import java.util.*;
public class Main {
public static void main(String args[]) {
String a;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(),m=0;
for(int i=10000;i<=999999;i++) {
a = String.valueOf(i);
char[] b = new char[a.length()];
char c='0';
b = a.toCharArray();
for (int j = 0; j < a.length(); j++)
m = m + (int) (b[j]-c);
if (a.length() == 5 && b[0] == b[4] && b[1] == b[3] && m == n) {
System.out.println(i);
} else if (a.length() == 6 && b[0] == b[5] && b[1] == b[4] && b[2] == b[3] && m == n) {
System.out.println(i);
}
m=0;
}
}
}