WikiOI 3943数学奇才チルノ(数学+テクニック)


3943数学奇才チルノcodevs月試合第一試合時間制限:1 s空間制限:256000 KBテーマ等級:黄金Gold問題解テーマ記述Description上白沢慧音先生の優れた弟子として、数学奇才チルノは算術の面で深い造詣を持っている.今日、codevsはこの数学界の奇抜な試験の第1題の主試験官に招待された.
キルノは0-9の間の数字が好きで、彼女は十進法の非負の数字の各人を一つ一つ識別して、それらを計算機で加算するのが好きで、つまり数字の数の和で、例えば1234に対して、キルノは計算機で1+2+3+4=10を計算します.
キルノは計算機の加算だけでなく、計算機の減算、乗算、べき乗を求める操作も使う.彼女は1つの数xが彼女にとって面白いと思っている.そして、彼女がxの数位の和を計算した後、k回のべき乗を求める操作を行い、pを乗じ、|q|を加えたり減らしたりして、得られた数はちょうどxである.
キルノはとても好奇心があって、1段の区間[l,r]以内のすべての整数xの中で、どれだけのxが彼女にとって面白いか、彼女はあなたが彼女にこの問題を解決することを望んでいます.
Input Descriptionの最初の行の3つの整数k,p,qを入力し、k乗を求め、pを乗じ、qが正則であれば|q|を加え、正則でなければ|q|を減算することを表す.2行目の2つの非負の整数lとrは、求められた区間を表し、l≦rを保証する.
出力はOutput Descriptionの最初の行の非負の整数nを記述し、どれだけ面白いxがあるかを表す.nが正の場合、2行目の昇順はn個の非負の整数を出力し、このn個の面白い数字を表し、数字の間は1つのスペースで区切られ、行末に余分なスペースがあることができる.
サンプル入力Sample Input 2 2 2-1 999
サンプル出力Sample Output 4 1 31 337 967
データ範囲と提示Data Size&Hintは100%のデータに対して1≦k≦5,0≦p,|q|≦10000,0≦l≦r≦10^9である.
データの範囲がこんなに大きいのは明らかに暴力ではないので、1から10^9の範囲内で、各数桁の数字の加算の最大値は81(999999999999)で、それでは0から81を列挙して、演算を行って、判断した数字xの各数位と前のものと等しいかどうかを判断して、等しいならば、配列に参加します.0から81まで列挙した後,配列中の数を小さいものから大きいものに並べ替え,各数が[l,r]の範囲内であるか否かを判断し,記録,出力すればよい.
program mys;

var d,p,q,i,j,k,m,n,t,l,r:longint;
a,ans,c:array[0..1000]of int64;
x,y:int64;

begin 
readln(k,p,q);
readln(l,r);
t:=0;
for i:=0 to 81 do 
begin 
x:=1;
for j:=1 to k do 
x:=x*i;
x:=x*p;
x:=x+q;
y:=x;
d:=0;
while y<>0 do 
begin 
d:=d+y mod 10;
y:=y div 10;
end;
if d=i then 
begin 
inc(t);
ans[t]:=x;
end;
end;

for i:=1 to 81 do 
for j:=i+1 to 81 do 
if ans[i]>ans[j] then 
begin 
x:=ans[i]; ans[i]:=ans[j]; ans[j]:=x;
end;

n:=0;
for i:=1 to 81 do 
if (ans[i]>=l)and(r>=ans[i]) then 
begin 
inc(n);
c[n]:=ans[i];
end;

writeln(n);
for i:=1 to n do
write(c[i],' ');
end.