[Rqnoj-148][NOIP1999]回文数

来源:互联网 发布:python源码剖析 百度云 编辑:程序博客网 时间:2024/05/21 17:39

回文数
高精度,比较水,好像我的代码有点长,不过我觉得这种题套模版是个好习惯~
代码:

type    hp=array[0..10000] of longint;var    n,ans:longint;    a:hp;function d(c:char):longint;begin     case c of          '0':d:=0;  '1':d:=1;  '2':d:=2; '3':d:=3;  '4':d:=4;          '5':d:=5;  '6':d:=6;  '7':d:=7; '8':d:=8;  '9':d:=9;          'A':d:=10; 'B':d:=11; 'C':d:=12; 'D':d:=13; 'E':d:=14; 'F':d:=15;     end;end;function ok(a:hp):boolean;var   i,j:longint;begin     i:=1; j:=a[0]; ok:=true;     while i<j do begin          if a[i]<>a[j] then begin ok:=false; break; end;          inc(i); dec(j);     end;end;function fan(a:hp):hp;var   b:hp;   i:longint;begin     fillchar(b,sizeof(b),0);     b[0]:=a[0]; for i:=1 to a[0] do b[a[0]-i+1]:=a[i];     fan:=b;end;procedure h_jia(a,b:hp;var c:hp);var   i,len:longint;begin     if a[0]>b[0] then len:=a[0] else len:=b[0];     fillchar(c,sizeof(c),0);     for i:=1 to len do begin         c[i]:=c[i]+a[i]+b[i];         c[i+1]:=c[i+1]+c[i] div n;         c[i]:=c[i] mod n;     end;     if c[len+1]<>0 then inc(len);     c[0]:=len;end;procedure main;var    s:string;    i:longint;begin     readln(n); readln(s); fillchar(a,sizeof(a),0);     a[0]:=length(s);     for i:=1 to a[0] do a[a[0]-i+1]:=d(s[i]);     ans:=-1;     for i:=0 to 30 do begin         if ok(a) then begin ans:=i; break end;         h_jia(a,fan(a),a);     end;     if ans=-1 then write('Impossible') else write(ans);end;begin     main;end.      


原创粉丝点击