选择题
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<Long> longs = narcissisticNumber(digits.length); for (Long l : longs) if (l > n) return l; return -1; } /** * 求出 n 位数的所有水仙花数 * * @param n * @return */ private static List<Long> narcissisticNumber(int n) { List<Long> 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。
全部评论
(1) 回帖