收藏 分享(赏)

21位水仙花数算法(C++实现).doc

上传人:nacm35 文档编号:7667313 上传时间:2019-05-23 格式:DOC 页数:5 大小:28KB
下载 相关 举报
21位水仙花数算法(C++实现).doc_第1页
第1页 / 共5页
21位水仙花数算法(C++实现).doc_第2页
第2页 / 共5页
21位水仙花数算法(C++实现).doc_第3页
第3页 / 共5页
21位水仙花数算法(C++实现).doc_第4页
第4页 / 共5页
21位水仙花数算法(C++实现).doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、一个 N 位的十进制正整数,如果它的每个位上的数字的 N 次方的和等于这个数本身,则称其为花朵数。例如:当 N=3 时,153 就满足条件,因为 13+53+33=153,这样的数字也被称为水仙花数(其中, “”表示乘方, 53 表示 5 的 3 次方,也就是立方) 。当 N=4 时,1634 满足条件,因为 14+64+34+44=1634.当 N=5 时,92727 满足条件。实际上,对 N 的每个取值,可能有多个数字满足条件。程序的任务是:求当 N=21 时,所有满足条件的水仙花数。注意:这个整数有 21 位,它的各个位数字的 21 次方之和正好等于这个数本身。如果满足条件的数字不只有一

2、个,请从小到大输出所有符合条件的数字,每个数字占一行。因为这个数字很大,请注意解法时间上的可行性。要求程序在 3 分钟内运行完毕。解题思路:这是一个组合问题。这个 21 位的数字是由 09 这十个数字组成的,先统计出该数字中每个数字出现的个数,然后求出各个位上数字的 21 次方之和(可用查表法) ,并统计出和中每个数字出现的个数,将每个数字在这个 21 位数中和在和中出现的次数进行比较,若所有的数字出现的次数均相同,则此时的 21 位数就是一个水仙花数,将其输出。通过计算我们容易知道,9 的 21 次方为一个 21 位数(109418989131512359209) ,因此,在这个 21 位数

3、当中 9 最多只能出现 9 次。128468643043731391252449177399146038697307#include#define N 21using namespace std;void fang(int x);int arr1021;int main()int cot10;for(int i = 0;i 9)addn -= 10;addn + 1+;/判断得到的和是不是一个 21 位数if(0 = addN - 1) continue;/计数和中每个数字出现的次数for(int o = 0;o = 0; -q)cout 0; -i)c = c * x;a = a * x;b = b * x;while(b 9999999)b -= 10000000;a += 1;while(c 9999999)c -= 10000000;b += 1;while(b 9999999)b -= 10000000;a += 1;int d;int e = N - 14;while(a)d = a % 10;arrxN - (e-) = d;a = a / 10;e = N - 7;while(b)d = b % 10;arrxN - (e-) = d;b = b / 10;e = N;while(c)d = c % 10;arrxN - (e-) = d;c = c / 10;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报