给你A和B,求[A,B]区间内有多少个水仙花数
输入描述:
两个整数,用空格隔开,保证数字都小于等于1000000,否则返回0
输出描述:
一个数字,表示[A,B]区间内的水仙花数个数
分析得分点:
1、输入以空格隔开的两数字(需要解析,去空格)
2、数字要小于等于1000000,否则返回0
3、水仙花数的数字位数不确定
具体实现:
package demo;
/**
* @Author 小猪上天
* @Email zhuhuaikuan@gmail.com
* @Data 2019/11/5 14:51
* @Version V1.0
* @description
*/
import java.util.Scanner;
/**
* 给你A和B,求[A,B]区间内有多少个水仙花数
* 输入描述:
* 两个整数,用空格隔开,保证数字都小于等于1000000,否则返回0
* 输出描述:
* 一个数字,表示[A,B]区间内的水仙花数个数
*
*/
public class demo1 {
public static void main(String[] args) {
String[] input = new Scanner(System.in).nextLine()
.split(" ");
int a = Integer.parseInt(input[0]);
int b = Integer.parseInt(input[1]);
if(a>b){ //判断输入两数字大小顺序
a=a+b;
b=a-b;
a=a-b;
}
// System.out.println(a);
// System.out.println(b);
if(b>1000000){ //数字大于1000000返回0
System.out.println(0);
return;
}
int count=0;
for(int number=a;number<=b;number++){
int temp = number;
int sum = 0;
for(int i=0;i<GetLength(number);i++){
sum += Math.pow(temp % 10, GetLength(number));//次方和相加
temp = temp / 10;
}
if (sum == number) {//判断是否相等
count++;
}
}
System.out.println(count);
}
static int GetLength(int number){ //分析数字的具体位数
int i = 0;
while (number / 10 > 0) {
i++;
number /= 10;
}
return i + 1;
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。