不能枚举所有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]<<" ";
}
}