codeforces #262B

来源:互联网 发布:深入浅出java程序设计 编辑:程序博客网 时间:2024/05/21 13:57

不能枚举所有x但是可以枚举所有的s因为s的范围从1到81;

之后判断是否在1到1e9中间且每一位的和是否等于x

#include <iostream>#include <cstdio>#include <cstring>using namespace std;long long  summ(long long  x){    long long  ans=0;    while(x){        ans+=x%10;        x/=10;    }    return ans;}long long  anss[10000000];int main(){    long long  a,b,c;    long long  num=0;    cin>>a>>b>>c;    memset(anss,0,sizeof(anss));    long long  gg=0;    for(long long  i=1;i<=81;i++){        long long  tmp=1;        for(long long  j=1;j<=a;j++)            tmp*=i;            long long x=b*tmp+c;            if((x>0&&x<1e9)&&i==summ(x)){                num++;                anss[gg++]=x;        }    }    cout<<num<<endl;    for(long long  i=0;i<gg;i++){        cout<<anss[i]<<" ";    }}

0 0
原创粉丝点击