这题真是WA出翔了,用了上交的模板,然后坑死人不说……WA到最后才明天是a与b数组会出界啊……因为如果n很大的话,因数很多的话,就不行了。所以把那模板改成直接计算就过了,因为这题没有要输出它们的质因数与指数,所以可以这么做……
#include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <list> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #define PI acos(-1.0) #define mem(a,b) memset(a,b,sizeof(a)) #define sca(a) scanf("%d",&a) #define sc(a,b) scanf("%d%d",&a,&b) #define pri(a) printf("%d\n",a) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define MM 1000005 #define MN 100010 #define INF 55566677 #define eps 1e-7 using namespace std; typedef long long ll; int gao(int m) { int sum=0; while(m) { sum+=m%10; m/=10; } return sum; } int factor(int n,int m) { int i,sum=0,b,flag=0; for(i=2; i<=sqrt((double)n); i++) if(n%i==0) { b=0; while(n%i==0) { ++b; n/=i; } sum+=gao(i)*b; flag=1; } if(n!=1) sum+=gao(n); if(sum==m&&flag) return 1; else return 0; } int main() { int n; while(sca(n)&&n) { for(int j=n+1;; j++) { int sum=0,m=gao(j); if(factor(j,m)) { pri(j); break; } } } return 0; }
原文:http://blog.csdn.net/u011466175/article/details/22986629