https://acm.ecnu.edu.cn/problem/2443
单点时限: 2.0 sec
内存限制: 256 MB
这一天 心情很不好,因为 给了 定义一个函数 f(a) 并让他求值,a 为非负整数,如果 a<=9 那么fa=a , 如果 a>10,那么fa=f(的每一位上的数字之和) 。
例如 ,问题就是, 想了很久不出来,于是他请求你编程帮助他
输入格式
第一行有一个数 t,表示接下来有多少组数据,每组数据只有一个数
输出格式
对于每组数据,输出 fa的值
样例
input
3
3
13
18
output
3
4
9
范围非常大,所以用字符串输入(但是测试数据贼水),如果a在十以内,直接输出值,不然就计算各位数的和即可。
public static int f(String n) {
if (n.length() == 1) {
return Integer.valueOf(n);
} else {
int temp = 0;
for (int i = 0; i < n.length(); i++) {
temp += n.charAt(i) - ‘0‘;
}
String ans = Integer.toString(temp);
return f(ans);
}
}
public static void fun() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String str = sc.next();
int ans = f(str);
System.out.println(ans);
}
}
原文:https://www.cnblogs.com/blogxjc/p/14358752.html