Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Why I got WA?here's my code: const max = 35000; var n,k,sum,t : longint; p : array[1..max div 2] of longint; num : array[1..max div 2] of integer; function digits(i : longint) : integer; var r : integer; begin r := 0; while i > 0 do begin inc(r,i mod 10); i := i div 10; end; digits := r; end; function check : boolean; var i,k : longint; sum : integer; begin sum := digits(n); k := n; i := 1; check := false; while p[i] <= sqrt(k) do begin while k mod p[i] = 0 do begin k := k div p[i]; dec(sum,num[i]); end; inc(i); if sum < 0 then exit; end; if (k = n) or ((k = 1) and (sum <> 0)) or (sum <> digits(k)) then exit; check := true; end; procedure gen; begin repeat inc(n); until check; writeln(n); end; function prime(k : longint) : boolean; var i : integer; begin prime := false; for i := 1 to t do if k mod p[i] = 0 then exit else if sqrt(k) < p[i] then break; prime := true; end; procedure init; var i : longint; begin p[1] := 2; t := 1; num[1] := 2; for I := 3 to max do if prime(I) then begin inc(t); p[t] := i; num[t] := digits(i); end; end; begin init; read(n); while n > 0 do begin gen; readln(n); end; end. Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator