51Nod-1015 水仙花数【进制+查表搜索】
来源:互联网 发布:手机wifi挂机赚钱软件 编辑:程序博客网 时间:2024/05/18 01:59
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
问题链接:1015 水仙花数
问题分析:
程序中所定义的水仙花数有哪些是不知道的,所以有必要先编写一个程序看看。
辅助程序都写出来了,那就干脆直接生成真正程序用的语句(AC的程序的第5行)吧。
实际上,计算查找水仙花数的程序,随着位数的增加,需要的运行时间越来越多,简直是无法忍受的。好在这个程序不用提交,自己用。
由于这个辅助程序时间复杂大,所以不能基于这个算法来编写提交的程序,不然会LTE。只能借用一下这个程序!
有了辅助程序,后面的事情就简单了。
程序说明:(略)
题记:编写一个辅助程序是一个好主意,常常需要的!
参考链接:(略)
生成水仙花数数组定义的辅助C++语言程序:
#include <iostream>#include <cmath>using namespace std;const int N = 3;const int MAXN = 6;const int BASE = 10;int main(){ cout << "int dn[]={"; int count=0; for(int i=N; i<=MAXN; i++) { int start = 1, end; for(int j=1; j<i; j++) start *= BASE; end = start * BASE; for(int j=start; j<end; j++) { int v=j, dn=0; while(v) { dn += pow(v % 10, i); v /= BASE; } if(dn == j) { if(++count != 1) cout << ", "; cout << j; } } } cout << "};" << endl; return 0;}
AC的C++程序如下:
#include <iostream>using namespace std;int dn[]={153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834};int main(){ int m, i; cin >> m; for(i=0; ; i++) if(dn[i] >= m) { cout << dn[i] << endl; break; } return 0;}
阅读全文
0 0
- 51Nod-1015 水仙花数【进制+查表搜索】
- 51NOD 1015 水仙花数
- 51nod 1015 水仙花数
- 51nod 1015 水仙花数
- 51nod-【1015 水仙花数】
- 51nod 1015 水仙花数
- 51Nod 1015 水仙花数
- 【51Nod】1015 水仙花数
- 51Nod--1015 水仙花数
- 51Nod 1015 水仙花数
- 51nod 1015 水仙花数
- 51Nod 水仙花数
- 51Nod-1015-水仙花数
- 51Nod 1016 水仙花数 打表
- 51nod 1016 水仙花数 V2 打表
- 51NOD 1016 水仙花数 V2(打表)
- 51Nod 1016 水仙花数 V2
- 51nod-1016-水仙花数 V2
- [一天几个linux命令] SUID SGID SBIT
- POJ 1403 Hotline 笔记
- [李景山php] 关于C语言中的 exit 及 _exit 区别
- 第一篇博客-面试失败的感想
- Spring Bean装配--Autowired注解注入说明
- 51Nod-1015 水仙花数【进制+查表搜索】
- 俩数据库时间类型字段的转换
- PHP跳转失败,header location无效
- [hdu&poj&洛谷] 经典线段树练习题
- [李景山php] 销毁进程
- 树的子结构
- 深度学习在推荐领域的应用
- 图像匹配算法比较与分析
- 1% 信号的基本运算:移位,反转,尺度变换