蓝桥杯样题-水仙花数(未完全解决)
来源:互联网 发布:网络视频电话 编辑:程序博客网 时间:2024/06/05 07:34
#include<iostream>
using namespace std;
void huaduo(int N)
{
unsigned long long x,y=1,b,sum,num[100],a=10; //定义大容量的数据类型
int n=1;
while(n<N) //为了尽可能的减少运算时间用y来计算x的初始值
{
n=1;
for(b=y;b!=0;++n)
b=b/a;
y*=10;
}
x=y;
while(1)
{
b=x; //用b来接收当前x的值
sum=0; //sum为各位的N次幂之和
for(int i=0;i<N;++i)
{
num[i]=b%a; //num[i]表示第i+1位的数值
b=b/a;
}
for(int i=0;i<N;++i)
{ int c=1;
for(int j=0;j<N;++j)
c*=num[i];
sum+=c;
}
if(sum==x) //当各位的N次幂之和和x相等时,输出该数
{ int d=1;
for(int i=1;i<N;++i)
d*=10;
if(x/d>=1)
cout<<x<<endl;
}
++x;
if(x>=10*y) //当x超过N位数停止循环
break;
}
}
int main()
{
int m;
while(1){
cin>>m;
huaduo(m);
cout<<"ok"<<endl;
}
while(1){}
return 0;
using namespace std;
void huaduo(int N)
{
unsigned long long x,y=1,b,sum,num[100],a=10; //定义大容量的数据类型
int n=1;
while(n<N) //为了尽可能的减少运算时间用y来计算x的初始值
{
n=1;
for(b=y;b!=0;++n)
b=b/a;
y*=10;
}
x=y;
while(1)
{
b=x; //用b来接收当前x的值
sum=0; //sum为各位的N次幂之和
for(int i=0;i<N;++i)
{
num[i]=b%a; //num[i]表示第i+1位的数值
b=b/a;
}
for(int i=0;i<N;++i)
{ int c=1;
for(int j=0;j<N;++j)
c*=num[i];
sum+=c;
}
if(sum==x) //当各位的N次幂之和和x相等时,输出该数
{ int d=1;
for(int i=1;i<N;++i)
d*=10;
if(x/d>=1)
cout<<x<<endl;
}
++x;
if(x>=10*y) //当x超过N位数停止循环
break;
}
}
int main()
{
int m;
while(1){
cin>>m;
huaduo(m);
cout<<"ok"<<endl;
}
while(1){}
return 0;
}
————————————————
当前未解决的问题为数值存储的大小不够和运算时间太长
阅读全文
1 0
- 蓝桥杯样题-水仙花数(未完全解决)
- (未完全)uva624
- 水仙花数(hdu2010)
- 水仙花数(2010)
- 水仙花数(daffodil)
- Armstrong数 (水仙花数)
- 输出水仙花数(广义水仙花)
- 组合数(未完)
- struts初始化配置问题--未完全解决
- 集合框架(未完全)
- minigui 移植(未完全)
- Java水仙花数(三位水仙花数求解)
- 水仙花数(3位数)
- 所有水仙花数(C#)
- 15-水仙花数(算法)
- 水仙花数(笨办法)
- 函数(案例:水仙花数)
- 水仙花数(多位)
- Python爬虫学习(一)——爬取新浪新闻
- Android示例-JavaScript与UI控件交互(一)
- Servlet的三种创建方式-----------实现javax.servlet.Servlet接口
- 对最大子列和的深度研究
- DataTable转List集合,Json.net与反射性能测试
- 蓝桥杯样题-水仙花数(未完全解决)
- 动态规划小结
- O
- c#DateTime
- Python与机器学习(一)
- python 装饰器学习
- stm32 cube
- CS234 value iteration/policy iteration
- idea使用