回 帖 发 新 帖 刷新版面

主题:无字天书

菜菜有一本很大的书,书一共有N页(0<N≤1000000000)。

奇特的是这本书里面一个字都没有。

有一天菜菜想在每一页的中间都写上该页的页码。

由于写一个"1"的墨水与写一个"2"的墨水是不同的。

所以菜菜想知道他到底要写多少个数字"0","1"..."8","9"。

可是这本书实在是太大了,所以菜菜找到了你来帮他解决这个问题。

Input
本题有多组数据,每组数据为一个正整数N。

Output
输出十行整数,分别对应0,1,2,3,4,5,6,7,8,9

Sample Input
15

Sample Output
1
8
2
2
2
2
1
1
1
1

[em4]

回复列表 (共9个回复)

沙发

又是tju上的题……无聊

板凳

答案!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![em8][em8][em8][em8][em8][em8][em8][em11][em10][em10][em10][em6][em4][em2][em1]

3 楼

这个你现在还要吗~ 我写了一个  要的话我打上来

4 楼

要[em5]

5 楼

program book;
var
i,n,c,k:longint ; a:array[1..10] of integer;
begin
writeln('please input n');
read(n);
for i :=1 to 10 do a[i]:=0;
for i:=1 to  n do
   begin
     i:=c;
       while k<>0 do
         begin
           k:=c mod 10;
           case k of
              1:a[1]:=a[1]+1;
              2:a[2]:=a[2]+1;
                    .
                    .
                    .
                    .
               9:a[9]:=a[9]+1;
               0:a[10]:=a[10]+1;
            end;
           c:=c div 10;
         end;
       end;
for i :=1 to 9 do writeln(i,':',a[i]);
writeln('0',':',a[10])
end.

6 楼

 写完了 但是 由于我写好的在学校 没有带回来
所以可能有错误
你编译一下
不过基本算法应该差不多


不过我有个地方还没有解决呢
就是书的页数 整形太少了 不知道长整形够不够
我遍的时候 没考虑这个问题

7 楼

不是错不错的问题……
是效率问题……注意看看数据的规模……

var n,m:longint;
    a,b:array[0..9] of longint;
    c:array[1..9] of 0..9;
    len,i,j:integer;

begin
assign(input,'count.in');
assign(output,'count.out');
reset(input); rewrite(output);
readln(n);
m:=n; len:=0;
while m>0 do begin len:=len+1;c[len]:=m mod 10;m:=m div 10;end;
b[0]:=0;b[1]:=1;
for i:=2 to 9 do b[i]:=b[i-1]*10;
m:=n;
for i:=len downto 1 do
  begin
   for j:=0 to 9 do a[j]:=a[j]+b[i-1]*(i-1)*c[i];
   for j:=0 to c[i]-1 do a[j]:=a[j]+b[i];
   a[c[i]]:=a[c[i]]+m mod b[i]+1;
  end;
  for i:=1 to len do a[0]:=a[0]-b[i];
  for i:=0 to 9 do writeln(a[i]);
  close(output)
end.

以前弄的,改改输入方法就可以AC了……

8 楼

我 是 刚刚开始学的 高1 啊
呵呵
上面的东西 很多我都看不懂 或者没见过啊 呵呵
可不可以 注释一下啊

9 楼

注释就免了,基本递推。

PS:别拿年龄来当自己的砝码。我也高一。

我来回复

您尚未登录,请登录后再回复。点此登录或注册