Dual Palindromes (dualpal)[USACO 1.2.5]

本文介绍了一个程序,用于找出既是十进制回文数也是至少两种其他进制下的回文数的整数。通过定义检查函数确保数在特定进制下为回文,并使用转换函数将十进制数转换为任意指定进制的形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//依然是进制转换和回文的判断了,应该没啥好说的吧。
program dualpal;

var
	n,s,tot,sum:longint;
	a:array [0..10000] of longint;
	b:array [0..15000] of longint;
	
function check:boolean;
var
	i:longint;
begin
	if (a[1]=0) or (a[tot]=0) then exit(false);
	for i:=1 to tot do if a[i]<>a[tot-i+1] then exit(false);
	exit(true);
end;
	
procedure change(x,y:longint);
var
	t,temp:longint;
begin
	tot:=0;
	temp:=x;
	while x<>0 do
		begin
			t:=x mod y;
			inc(tot);
			a[tot]:=t;
			x:=x div y;
		end;
	if check then inc(b[temp]);
end;
	
procedure main;
var
	i:longint;
begin
	sum:=0;
	while 1=1 do
		begin
			inc(s);
			for i:=2 to 10 do 
				begin
					change(s,i);
					if b[s]=2 then 
						begin
							inc(sum);
							writeln(s);
							break;
						end;
				end;
			if sum=n then exit;
		end;
end;

begin

	readln(n,s);
	main;

end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值