讨论 / 大牛帮忙!我种不好菊花的原因是什么?[3分]
Wych 2012-08-09 01:50:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeost[5]

得分: 30分

提交日期: 2008-10-5 17:57:00

有效耗时: 281毫秒

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

测试结果2: 选手程序运行超过时限

测试结果3: 测试结果错误.错误结果为:qing

hong bai qing huang

正确结果应为:bai

huang hong bai qing

测试结果4: 测试结果错误.错误结果为:qing

hong bai qing huang

正确结果应为:qing

qing huang hong bai

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

测试结果6: 选手程序运行超过时限

测试结果7: 测试结果错误.错误结果为:hong

qing huang hong bai

正确结果应为:huang

hong bai qing huang

测试结果8: 选手程序运行超过时限

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

测试结果10: 测试结果错误.错误结果为:hong

qing huang hong bai

正确结果应为:hong

bai qing huang hong

提交代码: program rq122(input,output);

var s:array [1..4] of char;

n,i,j,q:longint;

ch:char;

procedure color(ch:char);

begin

case ch of

’r’:write(’hong’);

’w’:write(’bai’);

’g’:write(’qing’);

’y’:write(’huang’);

end;

end;

begin

read(n);

q:=abs(n);

if q mod 4=0 then q:=1

else q:=0;

s[1]:=’r’;

s[2]:=’w’;

s[3]:=’g’;

s[4]:=’y’;

if n>0 then

for i:=1 to (n div 4)-q do

begin

ch:=s[1];

for j:=1 to 3 do

s[j]:=s[j+1];

s[4]:=ch;

end

else

begin

n:=abs(n);

for i:=1 to (n div 4)-q do

begin

ch:=s[4];

for j:=3 downto 1 do

s[j+1]:=s[j];

s[1]:=ch;

end;

end;

if n mod 4=0 then n:=4

else n:=n mod 4;

color(s[n]);

writeln;

for i:=1 to 3 do

begin color(s[i]);

write(’ ’);

end;

color(s[4]);

end.

纯模拟的策略难道超时?

为什么还有不对的数据呢?

#1 Jollwish@2008-10-05 03:06:00
回复 删除
n<maxlongint...

其实有循环...

var a,r:array[1..4]of string;

i,j,n,g,p:longint;

begin

readln(n);

a[1]:=’hong’;

a[2]:=’bai’;

a[3]:=’qing’;

a[4]:=’huang’;

if n mod 4=0 then

begin

g:=4;

p:=n div 4-1;

end

else

begin

g:=n mod 4;

p:=n div 4;

end;

for i:=1 to p mod 4 do

begin

r[1]:=a[2];

r[2]:=a[3];

r[3]:=a[4];

r[4]:=a[1];

a:=r;

end;

writeln(a[g]);

write(a[1]);

for i:=2 to 4 do write(’ ’,a[i]);

end.

#2 Wych@2008-10-05 05:26:00
回复 删除

谢谢jollwish!

虽然我没看懂你的程序,但我获得了点启发

由于我比较菜鸟,所以在此贴出我恶心的程序

别见笑

program rq122(input,output);

var s:array [0..16] of char=(’g’,’r’,’w’,’g’,’y’,’w’,’g’,’y’,’r’,’g’,’y’,’r’,’w’,’y’,’r’,’w’,’g’);

n,q:longint;

ch:char;

procedure color(ch:char);

begin

case ch of

’r’:write(’hong’);

’w’:write(’bai’);

’g’:write(’qing’);

’y’:write(’huang’);

end;

end;

begin

read(n);

while n<0 do n:=n+16;

color(s[n mod 16]);

writeln;

n:=n mod 16;

if n=0 then n:=16;

q:=(n-1) div 4;

case q of

0:begin

color(’r’);

write(’ ’);

color(’w’);

write(’ ’);

color(’g’);

write(’ ’);

color(’y’);

end;

1:begin

color(’w’);

write(’ ’);

color(’g’);

write(’ ’);

color(’y’);

write(’ ’);

color(’r’);

end;

2:begin

color(’g’);

write(’ ’);

color(’y’);

write(’ ’);

color(’r’);

write(’ ’);

color(’w’);

end;

3:begin

color(’y’);

write(’ ’);

color(’r’);

write(’ ’);

color(’w’);

write(’ ’);

color(’g’);

end;

end;

end.

#3 ahfy_zyt@2011-08-20 07:18:00
回复 删除
彼此彼此........

program zj;

var

a:array [1..4] of string;

i,j:longint;

n:longint;

t:string;

begin

readln(n);

a[1]:='hong';

a[2]:='bai';

a[3]:='qing';

a[4]:='huang';

j:=0;

for i:=1 to n do

begin

j:=j+1;

if j=5 then

begin

t:=a[1];

a[1]:=a[2];

a[2]:=a[3];

a[3]:=a[4];

a[4]:=t;

j:=1;

end;

end;

writeln(a[j]);

writeln(a[1],' ',a[2],' ',a[3],' ',a[4]);

readln;

end.

#4 S.C.Q.@2012-08-09 01:50:00
回复 删除
procedure work;

var

i,k,l:longint;

begin

for i:=1 to 4 do

a[i]:=i;

for i:=1 to 16 do

begin

if i mod 4=1 then a[i+7]:=a[i]

else a[i+3]:=a[i];

end;

while n>16 do n:=n mod 16;

k:=a[n];

if k=1 then write('hong');

if k=2 then write('bai');

if k=3 then write('qing');

if k=4 then write('huang');

writeln;

l:=(n-1) div 4;

if l=0 then write('hong',' ','bai',' ','qing',' ','huang');

if l=1 then write('bai',' ','qing',' ','huang',' ','hong');

if l=2 then write('qing',' ','huang',' ','hong',' ','bai');

if l=3 then write('huang',' ','hong',' ','bai',' ','qing');

end;

这个很清晰。。

查看更多回复
提交回复