1015 水仙花数(枚举)

1015 水仙花数

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题

 收藏

 关注

水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

给出一个整数M,求 >= M的最小的水仙花数。

Input

一个整数M(10 <= M <= 1000)

Output

输出>= M的最小的水仙花数

Input示例

99

Output示例

153

加油

#include <bits/stdc++.h>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
int k[2000];
void Edge(){
  mem(k);
  for(int i=10;i<=99;i++){
    int x=i/10,y=i%10;
    if(x*x+y*y==i)
      k[i]=1;
  }
  for(int i=100;i<=999;i++){
    int x=i%10,y=i/100,z=(i/10)%10;
    if(x*x*x+y*y*y+z*z*z==i)
      k[i]=1;
  }
  for(int i=1000;i<=2000;i++){
    int x=i%10,y=i/1000,z=(i/100)%10,l=(i/10)%10;
    if(x*x*x*x+y*y*y*y+z*z*z*z+l*l*l*l==i)
      k[i]=1;
  }
}
int main(){
  int n;
  Edge();
  while(cin>>n){
    for(int i=n;i<=2000;i++){
      if(k[i]==1)
        {
          cout<<i<<endl;
          break;
        }
    }
  }
  return 0;
}

  

时间: 2024-08-11 09:42:56

1015 水仙花数(枚举)的相关文章

1015 水仙花数(水题)

1015 水仙花数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 取消关注 水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 1000) Output 输出>= M的最小的水仙花数 Input示例 99 Output示例 153 从m开始

[2016-05-10][51nod][1015 水仙花数]

时间:2016-05-10 16:23:29 星期二 题目编号:[2016-05-10][51nod][1015 水仙花数] 题目大意: 水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153), 给出一个整数M,求 >= M的最小的水仙花数. 分析:直接算出前几个水仙花数就好 #include<stdio.h> using namespace std; int main(){ int m;

1015 水仙花数

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 1000) Output 输出>= M的最小的水仙花数 Input示例 99 Output示例 153 久违的水仙花数,第一发还傻傻的写了发暴力.. 弱数

51Nod 1015 水仙花数

#include <cmath> #include "iostream" using namespace std; int main() { int m; int a[10]={0}; cin>>m; for(int i=m;;i++){ int n=i,len=0,sum=0; while(n!=0) { len++; a[len]=n%10; n=n/10; } for(int j=1;j<=len;j++){ sum+=pow(a[j],len);

21位水仙花数(花朵数 )

问题就不描述了,简单说下思路. 思路:(1)暴力枚举21位数,然后一个个的计算,虽然能解,但是,时间不允许的. (2)枚举  0 -9 这10个数子在这个21位数中出现的次数.得到一种解后,再计算出这个21位数,然后与原来得到的解对比,看看0 - 9出现的次数是否一样,是,这个21位数就是一个解.用时不到30s. AC代码: import java.math.BigInteger; /*21位水仙花数 * 枚举每个数字出现的次数 * */ public class T08 { //记录0 - 9

51Nod 1016 水仙花数 V2(组合数学,枚举打表法)

1016 水仙花数 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4). 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 10^60) Output 输出>= M的最小的水仙花数,如果没有符合条件的

华为上机测试题(水仙花数升级版-java)

PS:这题满分100,没有做对,大家帮忙看看问题在哪 /* * 题目:水仙花数升级版  * 描述: 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153)给你A和B,求[A,B]区间内有多少个水仙花数 题目类别: 循环,查找,枚举,位运算 难度: 中级 分数: 100 运行时间限制: 无限制 内存限制: 无限制 阶段: 应聘考试 输入: 两个正整数,用空格隔开,保证数字都小于等于1000000. 输出: 一个数

C语言程序设计100例之(4):水仙花数

例4    水仙花数 题目描述 一个三位整数(100-999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数. 输入格式 没有输入 输出格式 若干行,每行1个数字. 输入样例 无 输出样例 153 * * * ... * * * (输出被和谐了) (1)编程思路1. 对三位数n(n为100~999之间的整数)进行穷举.对每个枚举的n,分解出其百位a(a=n/100).十位b(b=n/10%10)和个位c( c=n%10),若满足a*a*a+

筛选水仙花数

//水仙花数--个位的平方+十位的平方+百位的平方(等于==)该三位数 #include<stdio.h>int main(){ int ge,shi,bai; //从100开始筛选for(int i=100;i<1000;i++){ ge=i%10; shi=i/10%10; bai=i/100%10; if(a==ge*ge*ge+shi*shi*shi+bai*bai*bai){//水仙花数的判断条件 //输出 printf("%d\t",i); }} retu