循环从2开始,到sqrt(a),每次判断a是否能被i整除,如果可以,则将i存如vector中,a/=i,然后--i,目的是继续判断i,因为a可能可以被i整除多次.到循环结束的时候,再将a存入vector中。
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int getSum(int a)
{
int res=0;
int q=a;
while(q!=0)
{
res+=q%10;
q/=10;
}
return res;
}
bool isSmith(int a)
{
int q=a;
int res1=getSum(a);
int res2=0;
vector<int>c;
for(int i=2;i<=sqrt(a*1.0);i++)
{
if(a%i==0)
{
a/=i;
c.push_back(i);
//printf("%d ",i);
i--;
}
}
c.push_back(a);
if(a==q)
{
return false;
}
int size=c.size();
for(int i=0;i<size;i++)
{
res2+=getSum(c[i]);
}
//printf("%d\n",a);
//cout<<res1<<" "<<res2<<endl;
if(res1==res2)
return true;
else
return false;
}
int main()
{
int n;
while(cin>>n&&n)
{
for(int i=n+1;i<=2000000000;i++)
{
if(isSmith(i))
{
cout<<i<<endl;
break;
}
}
}
//if(isSmith(4937775))
//cout<<"success"<<endl;
return 0;
}
分享到:
相关推荐
最近在acm.zju.edu.cn上通过的题目的代码,都是比较有价值的题目
zoj吐血制作,希望大家喜欢
这是一份ZOJ的ACM题解,包含大多数题目的AC程序,是学习算法的好东西~
zoj在线评测系统前台和后台源代码,包括比赛用的客户端源代码
ZOJ 1055 Oh, Those Achin Feet.bfs求最短路径.
zoj4041正确题解源代码,以及运行程序
zoj网站中多个练习的c++解答,文件名即为题目序号。经本人测试可以使用,主要为动态规划方面的问题,希望给初学者提供帮助。
浙江大学ZOJ源码题解,按照题目类型和难易分类。
acm中zoj1002的可运行C++程序
问题:枫教授在一所大学教数学,他发现了一个函数,用于获得一个表达式的操作数的目的,函数命名op(i,e)可以描述如下:
一个非常非常非常非常实用的zoj结题代码
zoj的代码实现,很好,而且很全面,全部实现。
zoj_1004.cpp 求单词字母进出栈后能形成目标串的进出方案 广度优先搜索求解
ZOJ上的一些水题,4.16浙江省程序设计竞赛的题目
zoj 2536 这个不是用贪心做的
zoj上的3607Lazier Salesgirl AC代码及一些注释。贪心算法
浙大acm OJ1204,自己做的,已经AC 分享一下,若有更好的算法可以教教我
能AC 通过的c++代码,包括zoj1002,1091,1789
浙江大学zoj题目代码,大量水题代码,齐全
ZOJ题解集合-截至2835。共1244个文件,C/C++,有重复