题目:
把一个整数的每个数位都平方后求和,又得到一个整数,我们称这个整数为:位平方和。
对新得到的整数仍然可以继续这一运算过程。
比如,给定整数为4,则一系列的运算结果为:
16,37,58,89,....
本题的要求是,已知一个整数x,求第n步的运算结果。
数据格式要求:
输入,两个整数x n,中间以空格分开。表示求x的第n步位平方和。其中,x,n都大于0,且小于100000。
输出,一个整数,表示所求结果。
例如,
输入:
4 3
则程序应该输出:
58
再例如,
输入:
1314 10
则程序应该输出:
20
思路:先得到数字长度(几个数),各自平方相加
解:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int n = sc.nextInt();
String S;
int l;
int s;
int w;
for (int i = 0; i < n; i++) {
//利用字符串判断数的长度
S = x + "";
l = S.length();
s = 0;
//提取每个数字,平方相加
for (int j = 0; j < l; j++) {
w = S.charAt(j) - 48;
s += w * w;
}
//记录,用作下次重复或者输出
x = s;
}
System.out.println(x);
}
}