循环-11. 水仙花数

循环-11. 水仙花数(20)

时间限制

2000 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

徐镜春(浙江大学)

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 13 + 53+ 33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153
370
371
407
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 int main()
 5 {
 6     int n;
 7     scanf("%d", &n);
 8     int a = pow(10, n-1), b = pow(10, n), i, j, sum, s[10];
 9     for(i = 0; i < 10; i++)
10         s[i] = pow(i, n);//数据预处理,否则会超时
11     for(i = a; i < b; i++)
12     {
13         sum = 0;
14         j = i;
15         while(j)
16         {
17             sum += s[j % 10];
18             j = j / 10;
19             if(sum > i)
20                 break;
21         }
22         if(sum == i)
23             printf("%d\n", i);
24     }
25     return 0;
26 }
时间: 2024-08-02 03:54:25

循环-11. 水仙花数的相关文章

循环-11. 水仙花数(20)

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身.例 如:153 = 13 + 53+ 33. 本题要求编写程序,计算所有N位水仙花数. 输入格式: 输入在一行中给出一个正整数N(3<=N<=7). 输出格式: 按递增顺序输出所有N位水仙花数,每个数字占一行. 输入样例: 3 输出样例: 153 370 371 此题借用他人的算法,十分简短. #include <iostream> #include <stdio.h> #inclu

java代码:用for循环求和,求偶数和,求奇数和,打印水仙花数,统计水仙花数

用for循环求和,求偶数和,求奇数和,打印水仙花数,统计水仙花数package loop; public class For1 {public static void main(String[] args) {int sum=0;for(int x=0;x<=100;x++) {sum=sum+x;}System.out.println("100以内(含100)整数和:"+sum);System.out.println("------------------------

java循环练习:水仙花数

package practiceGO; /*  *5.算水仙花数(100-999):表示三位数的数字,个位的三次方+十位的三次方+百位的三次方=这个数本身   */ public class Cto { public static void main(String[] args) { int first,second,third; for(int i=100; i<=999; i++){ first = (i/100); second = (i-first*100)/10; third = i%

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

百担百马+百钱百鸡+水仙花数--------“穷举”的三个练习题

1 //百马百担类似于百鸡百钱的问题,穷举 2 3 for(int dm =0;dm<=33;dm++) //大马的数量,第一层循环 4 5 { 6 for(int zm =0;zm<=50;zm++) //中马的数量,第二层循环 7 8 { 9 for(int xm = 0; xm<=200;xm++) //小马的数量,第三层循环 10 11 { 12 if(dm+zm+xm==100&&dm*3+zm*2+xm/2.0==100) 13 { 14 System.out

java 实现(代码) -- 水仙花数 + 杨辉三角形

1 /* 2 在控制台输出所有的“水仙花数” 3 水仙花:100-999 4 5 在以上数字范围内:这个数=个位*个位*个位+十位*十位*十位+百位*百位*百位 6 7 例如:xyz=x^3 +y^3 +z^3 8 9 怎么把三位数字拆成每位整数 10 11 思路:百位: int x= i / 100 12 十位: int y = i / 10 % 10 13 个位: int z = i % 10 14 15 */ 16 class LoopTest3 { 17 public static vo

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

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

水仙花数

描述 请判断一个数是不是水仙花数.其中水仙花数定义各个位数立方和等于它本身的三位数. 输入 有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000) 输入0表示程序输入结束. 输出 如果n是水仙花数就输出Yes 否则输出No 样例输入 153 154 0 样例输出 Yes No 1 #include <stdio.h> 2 3 int main(){ 4 int number; 5 int sum; 6 int temp; 7 8 while(1){ 9 scanf(

如何用C#寻找100到999的所有水仙花数?

首先解释一下何为水仙花数:水仙花数只是自幂数的一种,严格来说是三位数的个位.十位.百位的3次幂数相加等于原来的数字,称为水仙花数.(例如:1^3 + 5^3+ 3^3 = 153) 那么如何通过C#语句来解决这个问题呢? 分析:想要找到百位的水仙花数,要解决的问题由两个,第一个是如何让计算机正确分离出百位数的个位.十位.百位的数字.第二个是如何将其不断循环让100到999都能经过检验. 第一个问题:将这个数值类型定义为整型int(这种数据类型的数字是没有小数点的) 最高位数字--对100整除,则