题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1015
基准时间限制:1 秒 空间限制:131072 KB
水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数。 Input 一个整数M(10 <= M <= 1000) Output 输出>= M的最小的水仙花数 Input示例 99 Output示例 153
水仙花数,相信小伙伴们都见过,只不过这里范围变了一下(10 <= M <= 1000):
#include <iostream>
#include <cmath>
using namespace std;
// 判断 n 是否为水仙花数
bool jud(int n) {
int res = n;
int e = 3;
if(n >= 1000) {
e = 4;
}
int sum = 0;
while(n) {
sum += pow(n%10, e);
n /= 10;
}
return sum == res;
}
int main() {
int m;
cin >> m;
// 从 m 开始一直找到最小的水仙花数
for(int i = m; ; i++) {
if(jud(i)) {
cout << i << endl;
break;
}
}
return 0;
}