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.