欢聚时代Java挂了"/>
欢聚时代Java挂了
选择题
20道,80分,错选不得分,少选得1/2分。(这1/2的意思是得一半的分还是得0.5分?)
编程
求下一个水仙花数
水仙花数
但是题目里并没有限定说是三位数。说了一句 1 位数都是水仙花数,因为 3^1 = 3,153是水仙花数,因为153=1^3 + 5^3 + 3^3。
问输入一个数,比这个数更大一点的水仙花数是多少。
输入:108
输出:153
public class Main {
public static void main(String[] args) {
int n = 1000;
String[] split = (n + "").split("");
int length = split.length;
narcissisticNumber(length).forEach(System.out::println);
}
/**
* 比 n 更大的水仙花数
* @param n
* @return
*/
public long nextNarcissisticNumber(int n) {
// write code here
if (n < 9) return n + 1;
if (n >= 10 && n < 100) return 153;
String[] digits = ("" + n).split("");
List longs = narcissisticNumber(digits.length);
for (Long l : longs)
if (l > n)
return l;
return -1;
}
/**
* 求出 n 位数的所有水仙花数
*
* @param n
* @return
*/
private static List narcissisticNumber(int n) {
List list = new ArrayList<>();
for (long i = (long) Math.pow(10, n - 1); i <= Math.pow(10, n) - 1; i++) {
long sum = 0;
long tmp = i;
while (sum <= i && tmp != 0) {
long every = 1;
long mod = tmp % 10;
for (long j = 1; j <= n; j++)
every *= mod;
sum += every;
tmp /= 10;
}
if (sum == i)
list.add(sum);
}
return list;
}
}
简答题
数据库三张表,两道SQL题。分值4、6。
更多推荐
欢聚时代Java挂了
发布评论