讨论 / 为什么只有80分???
gaoxin 2010-12-18 23:57:00
点我顶贴 收藏 删除
var n,i,j,num,t:longint;

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

s:string;

function p(x,y:longint):longint; // 阶乘运算

var i,t:longint;

begin

t:=1;

for i:=1 to y do t:=t*x;

p:=t;

end;

function f(x,y:longint):longint; //求那个删的数

var t,n,i,xx:longint;

begin

t:=0;

n:=x;

while n>0 do

begin

xx:=n mod 10;;

n:=n div 10;

t:=t+p(xx,y);

if t>256 then exit(0);

end;

f:=t;

end;

procedure ppp; //读入数据和处理

begin

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

readln(n);

readln(s);

i:=1; num:=0;

while i<length(s) do

begin

inc(num);

while s[j]<> do inc(j);

val(copy(s,i,j-i),t);

inc(a[t]);

i:=j+1;

j:=i

end;

end;

begin //main

ppp;

for i:=1 to n do //n轮

for j:=0 to 256 do if a[j]>0 then

//找出存在的数

begin

t:=f(j,i+1);

a[t]:=0;

end;

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

end.

#1 gaoxin@2008-02-13 21:24:00
回复 删除
就这2个错了

测试结果错误.错误结果为:2 5 8 9 16 18 20 26 32 45 49 52 53 61 73 74 80 82 90 106

正确结果应为:2 5 8 9 18 20 26 32 45 49 53 73 74 80 82 90 106

测试结果错误.错误结果为:3 8 12 14 15 24 43 44 46 47 48 49 50 53 56 57 60 63 75 76 77 78 79 81 84 87 92 95 96 99 103 104 108 109 110 114 116 118 119 124 126 127 128 129 131 133 134 137 138 139 140 143 145

正确结果应为:3 6 12 14 15 22 24 43 44 46 47 48 49 55 56 57 60 62 63 68 75 76 77 78 79 81 84 87 88 92 94 95 96 99 102 103 104 108 109 110 114 116 118 119 124 126 127 129 131 133 134 135 137 138 139 140 141 143 145 146

#2 slzxzwtxiaohao@2008-02-14 00:10:00
回复 删除
状态题目:吉祥数

状态编号: [查看该题]

状态: Unaccepted

测评机: Virmain[1]

得分: 70分

提交日期: 2008-2-14 16:09:00

有效耗时: 94毫秒

测试结果1: 测试结果错误.错误结果为:2 5 8 9 16 18 20 26 32 45 49 52 53 61 73 74 80 82 90 106

正确结果应为:2 5 8 9 18 20 26 32 45 49 53 73 74 80 82 90 106

测试结果2: 测试结果错误.错误结果为:14 15 20 31 32 33 34 45 52 60 61 62 99 100 106 110 111 112 125 128 136 141 221 232

正确结果应为:14 15 20 31 32 33 34 45 52 60 61 62 99 100 106 110 111 112 125 125 128 136 141 221 232

测试结果3: 测试结果正确

测试结果4: 测试结果正确

测试结果5: 测试结果正确

测试结果6: 测试结果正确

测试结果7: 测试结果正确

测试结果8: 测试结果正确

测试结果9: 测试结果正确

测试结果10: 测试结果错误.错误结果为:3 6 12 14 15 22 24 29 43 44 46 47 48 49 51 55 56 57 58 60 62 63 68 69 75 76 77 78 79 81 84 87 88 92 94 95 96 99 102 103 104 108 109 110 114 116 118 119 124 126 127 129 131 133 134 135 137 138 139 140 141 143 145 146

正确结果应为:3 6 12 14 15 22 24 43 44 46 47 48 49 55 56 57 60 62 63 68 75 76 77 78 79 81 84 87 88 92 94 95 96 99 102 103 104 108 109 110 114 116 118 119 124 126 127 129 131 133 134 135 137 138 139 140 141 143 145 146

提交代码: program jxs;

var

s:ansistring;

b:array[-1..255] of boolean;

n,a,i,j:longint;

function eee(a:longint):longint;

var

ee11,ee22,ee33,ee1,ee2,ee3,i:longint;

begin

ee11:=a div 100;ee22:=a mod 10;

ee33:=a div 10 mod 10;ee1:=1;ee2:=1;ee3:=1;

for i:=1 to j+1 do begin

ee1:=ee1*ee11;ee2:=ee2*ee22;ee3:=ee3*ee33;end;

eee:=ee1+ee2+ee3;

if eee>255 then eee:=-1;

end;

begin

for i:=0 to 255 do b[i]:=false;

readln(n);

readln(s);a:=0;

for i:=1 to length(s) do

begin

if s[i]<> then a:=a*10+ord(s[i])-48;

if s[i]= then begin b[a]:=true;a:=0;end;

end;

if a<>0 then b[a]:=true;

for j:=1 to n do

begin

for i:=0 to 255 do

begin

if b[i] then b[eee(i)]:=false;

end;

end;

j:=0;

for i:=0 to 255 do

if b[i] and(j=0) then begin inc(j);write(i);end else

if b[i] then write( ,i);

end.

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

#3 chip@2010-10-01 20:56:00
回复 删除
啊,我更惨...

Unaccepted

测评机: Xeost[5]

得分: 60分

提交日期: 2010-10-2 11:50:00

有效耗时: 1046毫秒

测试结果1: 测试结果错误.错误结果为:2 5 8 9 10 17 18 20 26 32 45 49 52 53 61 73 74 80 82 85 90 106

正确结果应为:2 5 8 9 18 20 26 32 45 49 53 73 74 80 82 90 106

测试结果2: 测试结果错误.错误结果为:14 15 20 31 32 33 34 45 52 60 61 62 99 100 106 110 111 112 125 128 136 141 221 232

正确结果应为:14 15 20 31 32 33 34 45 52 60 61 62 99 100 106 110 111 112 125 125 128 136 141 221 232

测试结果3: 通过本测试点|有效耗时171ms

测试结果4: 测试结果错误.错误结果为:2 21 22 28 82 210 211 212 213 220 221 222 223 230

正确结果应为:21 22 28 82 210 211 212 213 220 221 222 223 230

测试结果5: 通过本测试点|有效耗时172ms

测试结果6: 通过本测试点|有效耗时188ms

测试结果7: 通过本测试点|有效耗时172ms

测试结果8: 通过本测试点|有效耗时171ms

测试结果9: 通过本测试点|有效耗时172ms

测试结果10: 测试结果错误.错误结果为:3 4 6 12 13 14 15 22 24 29 43 44 46 47 48 49 51 55 56 57 60 62 63 68 73 75 76 77 78 79 81 84 87 88 92 94 95 96 99 102 103 104 108 109 110 114 116 118 119 124 126 127 129 131 133 134 135 137 138 139 140 141 143 145 146

正确结果应为:3 6 12 14 15 22 24 43 44 46 47 48 49 55 56 57 60 62 63 68 75 76 77 78 79 81 84 87 88 92 94 95 96 99 102 103 104 108 109 110 114 116 118 119 124 126 127 129 131 133 134 135 137 138 139 140 141 143 145 146

提交代码: view sourceprint?01.{

02.rqnoj.154.game

03.}

04.program game;

05.var

06.

a:array[1..200,0..1]of longint;

07.

f:array[1..10000000]of boolean;

08.

i,j,k,q,k1,k2,n,l:longint;

09.function get(p,n:longint):longint;

10.var i,j,k:longint;

11.

s:string;

12.begin

13.

get:=0;

14.

str(p,s);

15.

for i:=1 to length(s) do begin

16.

k:=1;

17.

for j:=1 to n do k:=k*(ord(s[i])-ord('0'));

18.

get:=get+k;

19.

end;

20.end;

21.begin

22.

fillchar(f,sizeof(f),false);

23.

readln(n);

24.

l:=0;

25.

while not eoln do begin

26.

inc(l);

27.

read(a[l,1]);

28.

if f[a[l,1]] then dec(l)

29.

else f[a[l,1]]:=true;

30.

end;

31.

readln;

32.

for i:=2 to n+1 do begin

33.

for j:=1 to l do if (a[j,0]=0)then begin

34.

k:=get(a[j,1],i);

35.

if(k<=256)then if(f[k]) then begin for q:=1 to l do if a[q,1]=k then begin

36.

a[q,0]:=1;

37.

end

38.

else f[k]:=true;

39.

end;

40.

end;

41.

end;

42.

for i:=1 to l-1 do

43.

for j:=i+1 to l do if a[i,1]>a[j,1] then begin

44.

k1:=a[i,1]; k2:=a[i,0];

45.

a[i,1]:=a[j,1]; a[i,0]:=a[j,0];

46.

a[j,1]:=k1; a[j,0]:=k2;

47.

end;

48.

for i:=1 to l do if a[i,0]=0 then write(a[i,1],' ');

49.

writeln;

50.

readln;

51.end.

#4 李军伟@2010-12-18 23:57:00
回复 删除
给gaoxin:

题目要求是“余下的同学”,然而依据题意,你那两个点就错了。

当不考虑“余下的同学”时,那两个点就可以过了。

查看更多回复
提交回复