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.
posted @ 2010-02-25 15:59  SmartIOI  阅读(316)  评论(0)    收藏  举报
本站采用CC授权如需转载、引用文章,请务必附上作者及来源处。 Creative Commons License