noip2006初赛-完善程序第二题

noip2006C_4_2由键盘输入一个奇数P(P<100,000,000),其个位数字不是5,求一个整数S,使P×S =1111...1 (在给定的条件下,解S必存在)。要求在屏幕上依次输出以下结果:

(1)S的全部数字。除最后一行外,每行输出50位数字。

(2)乘积的数字位数。

 

例1:输入p=13,由于13*8547=111111,则应输出(1)8547(2)6

例2:输入p=147,则输出结果应为

(1)755857898715041572184429327286470143613

(2)42,即等式的右端有42个1。

 

var
p,a,b,c,t,n:longint;

begin
	while (true) do
	begin
		writeln('Input p,the last digit is 1 or 3 or 7 or 9:');
		readln(p);
		if (p mod 2<>0) and (p mod 5<>0) then break;
	end;
	a:=0;
	n:=0;
	while (a<p) do
	begin
		a:=a*10+1;
		inc(n);
	end;
	//这几轮循环主要是找一个比p大且最接近p的数字a
	t:=0;
	repeat
		b:=a div p;
		write(b:1);
		inc(t);//t记录位数
		if (t mod 50=0) then writeln;
		c:=a-p*b;
		a:=c*10+1;
		inc(n);
	until c<=0;
	dec(n);
	writeln;
	writeln('n=',n);
end.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值