1、由键盘输入正整数N(N≤50),已知数列A1,A2,A3,……,An分别为 2004,20042004,200420042004,……,20042004……2004。问:A1+A2+A3+……+An的精确值S有多少位数?S当中有多少个“
1、由键盘输入正整数N(N≤50),已知数列A1,A2,A3,……,An分别为2004,20042004,200420042004,……,20042004……2004。问:A1+A2+A3+……+An的精确值S有多少位数?S当中有多少个“0”?
(设:S的位数为K,S中“0”的个数为Z)
例:输入:N=2
输出:K=8 Z=4 (因为S=20044008)
测试数据:
1:输入1,输出4 2
2:输入2,输出8 4
3:输入4,输出16 6
4:输入17,输出68 23
5:输入49,输出196 42
program Sum2004;
Const Number = 2004;
var
n, i, z : integer;
s : array[1 .. 50] of longint;
begin
readln(n);
s[1] := Number;
for i := 2 to n do
s[i] := s[i-1]+Number;
for i := n downto 2 do
begin
s[i-1] := s[i-1]+s[i] div 10000;
s[i] := s[i] mod 10000;
if s[i] mod 10 = 0 then z := z+1;
if s[i] div 10 mod 10 = 0 then z := z+1;
if s[i] div 100 mod 10 = 0 then z := z+1;
if s[i] div 1000 = 0 then z := z+1;
end;
writeln('k = ', 4*n, ' z = ', z+2);
for i := 1 to n do
write(s[i]:4);
readln;
end.
(设:S的位数为K,S中“0”的个数为Z)
例:输入:N=2
输出:K=8 Z=4 (因为S=20044008)
测试数据:
1:输入1,输出4 2
2:输入2,输出8 4
3:输入4,输出16 6
4:输入17,输出68 23
5:输入49,输出196 42
program Sum2004;
Const Number = 2004;
var
n, i, z : integer;
s : array[1 .. 50] of longint;
begin
readln(n);
s[1] := Number;
for i := 2 to n do
s[i] := s[i-1]+Number;
for i := n downto 2 do
begin
s[i-1] := s[i-1]+s[i] div 10000;
s[i] := s[i] mod 10000;
if s[i] mod 10 = 0 then z := z+1;
if s[i] div 10 mod 10 = 0 then z := z+1;
if s[i] div 100 mod 10 = 0 then z := z+1;
if s[i] div 1000 = 0 then z := z+1;
end;
writeln('k = ', 4*n, ' z = ', z+2);
for i := 1 to n do
write(s[i]:4);
readln;
end.


浙公网安备 33010602011771号