题目: | 双重回文数 | |
来源: | Usaco1.2.5 | |
题目大意: | 前N个大于S的且在2~10进制中有两个或以上是回文数 | |
数据范围: | 1 <= N <= 15、0 < S < 10000 | |
样例: |
3 25
|
26 27 28 |
做题思路: | 进制转换、我感觉从10进制开始枚举好,因为这样数组不用清空 | |
知识点: | 进制转换 |
{
ID:Dount Nameless
TASK:dualpal
LANG:PASCAL
}
var
a,b,c:array[0..10000]of longint;
d:boolean;
i,j,n,s:longint;
function pd(x:longint):boolean;{<判断回文>}
var
i,j:longint;
begin
i:=1;j:=x;
while (a[i]=a[j])and(i<=j) do
begin
inc(i);dec(j);
end;
ifi<j then exit(false);
exit(true);
end;
procedure print(x:longint);{<逐个枚举>}
var
i,j,t,tot:longint;
begin
d:=false; tot:=0;
fori:=10 downto 2 do
begin
iftot>=2 then break;
t:=x; j:=0;
while t>0 do
begin
inc(j);
a[j]:=t mod i;
t:=t div i;
end;
ifpd(j) then inc(tot);
end;
iftot>=2 then
begin
d:=true;
writeln(x);
end;
end;
begin
assign(input,'dualpal.in');reset(input);
assign(output,'dualpal.out');rewrite(output);
readln(n,s);
while n>0 do
begin
inc(s);
print(s);
ifd then dec(n);
end;
close(input);close(output);
end.
题目来源:
http://ace.delos.com/usacoprob2?a=YqYGTaSaabV&S=dualpal