讨论 / 超时
zht 2009-01-22 00:20:00
点我顶贴 收藏 删除
1000000000~2000000000

超时!!

程序代码:

program asdf;

var m,n,i,x,y,j:longint;

b:array[1..15] of 0..9;

a:array[0..9] of longint;

begin

read(m,n);

fillchar(a,sizeof(a),0);

for i:=m to n do

begin

x:=i;y:=0;

repeat

y:=y+1;

b[y]:=x mod 10;

x:=x div 10;

until x=0;

for j:=1 to y do

begin

case b[j] of

0:a[0]:=a[0]+1;

1:a[1]:=a[1]+1;

2:a[2]:=a[2]+1;

3:a[3]:=a[3]+1;

4:a[4]:=a[4]+1;

5:a[5]:=a[5]+1;

6:a[6]:=a[6]+1;

7:a[7]:=a[7]+1;

8:a[8]:=a[8]+1;

9:a[9]:=a[9]+1;

end;

end;

end;

write(a[0]);

for i:=1 to 9 do write( ,a[i]);

end.

#1 3230391@2008-05-18 20:45:00
回复 删除
program shuzi;

var

m,n,i:longint;

s:string;

a:array[0..9] of longint;

k,j,b:integer;

begin

readln(m,n);

fillchar(a,sizeof(a),0);

for i:=m to n do begin

str(i,s);

b:=length(s);

for j:=1 to b do begin

k:=ord(s[j])-ord(0);

a[k]:=a[k]+1;

end;

end;

for i:=0 to 9 do write(a[i], );

end.

#2 ithink@2008-09-20 19:48:00
回复 删除
按位分离一位位做,绝不tle

#3 guoshi3@2008-09-21 02:27:00
回复 删除
把你那堆case改成a[b[j]]:=a[b[j]]+1就过了。
#4 WZMMM@2009-01-22 00:20:00
回复 删除
这能超时,太垃圾了,我穷举都过了!
#5 哀悼的黎明@2014-01-25 04:46:01
回复 删除
我一共提交了5次,前4次都是超时,最后一次AC了,主要问题是,我并没有改程序。
查看更多回复
提交回复