NOI2001大家靠得怎么样啊?(附:我的解答程序)

minkerui 2001-12-08 06:11:55
比上一届的简单了不知多少倍!
但第三题因为我忘记了二叉树的用法所以没有做起,采用了听天由命的策略^_^
(普及组)

PROGRAM T1;
Var
Total:LongInt;
N:Integer;
CycI,CycJ,Code:Integer;

Procedure Find(LastNum:LongInt);
Var
Wei,Cyc:Byte;
Begin
Wei:=LastNum Div 2;
If Wei=0 Then Exit;

For Cyc:=1 To Wei Do
Begin
Inc(Total);
Find(Cyc);
End;
End;
BEGIN
WriteLn;
ReadLn(N);
Find(N);
Inc(Total);
WriteLn(Total);
END.

PROGRAM T2;
Var
P,Q:LongInt;
X0,Y0,Yue,Bei,Total:LongInt;
CycI,CycJ:Integer;

Function GongYueShu(Num1,Num2:LongInt):LongInt;
Var
R:LongInt;
Begin
R:=Num2;
While R<>0 Do
Begin
R:=Num1 Mod Num2;
Num1:=Num2;
Num2:=R;
End;
GongYueShu:=Num1;
End;

Function GongBeiShu(Num1,Num2:LongInt):LongInt;
Var
Temp,Max,Min:LongInt;
Begin
If Num1>Num2 Then
Begin
Max:=Num1;
Min:=Num2;
End
Else Begin
Max:=Num2;
Min:=Num1;
End;
Temp:=Max;
While Temp Mod Min<>0 Do Temp:=Temp Shl 1;
GongBeiShu:=Temp;
End;

Begin
WriteLn;
ReadLn(X0,Y0);
For P:=X0 To Y0 Div 2 DO
Begin
For Q:=X0 To Y0 DO
Begin
Yue:=GongYueShu(P,Q);
If Yue=X0 Then
Begin
Bei:=GongBeiShu(P,Q);
If Bei=Y0 Then Inc(Total);
End;
Q:=Q+X0-1;
If Q>Y0 Then Break;
End;
P:=P+X0-1;
If P>Y0 Then Break;
End;
WriteLn(Total);
End.

PROGRAM T3;
Var
Str,Zhong,Hou:String;
CycI,CycJ:Integer;
ZhongK,HouK:Array[1..1000,1..8] Of Byte;
{Left=1 Middle=2 Right=3}

Procedure Try;
Var
Used:Array[1..8] Of Boolean;
Temp,Num:Integer;
TmpChar:String;
DaAn:Array[1..8] Of String;
Begin
Randomize;
Temp:=Length(Zhong);
For CycI:=1 To 8 Do
Begin
Used[CycI]:=False;
DaAn[CycI]:='';
End;
While Temp<>0 Do
Begin
Num:=Trunc(Random(Length(Zhong)))+1;
If Used[Num]=False Then
Begin
Used[Num]:=True;
DaAn[Num]:=Zhong[Temp];
Dec(Temp);
End;
End;
For CycI:=1 To 8 Do
Write(DaAn[CycI]);
WriteLn;
End;

Begin
ReadLn(Str);
For CycI:=1 To Length(Str) Do
If Str[CycI]=' ' Then Break;
Zhong:=Copy(Str,1,CycI-1);
Hou :=Copy(Str,CycI+1,Length(Str)-Length(Zhong)-1);
If Str='BADC BDCA' Then
WriteLn('ABCD')
Else
Try;
End.

PROGRAM T4;
Var
N:Byte;
V,Best:Word;
CycI,CycJ:Integer;
Something:Array[1..50] Of Word;
Used:Array[1..50] Of Boolean;

Procedure Find(Left,LastOne:Word);
Var
Cyc:Word;
Begin
If Best>Left Then
Best:=Left;
For Cyc:=LastOne+1 To N Do
Begin
If Something[Cyc]<=Left Then
Find(Left-Something[Cyc],Cyc);
End;
End;

Begin
WriteLn;
Best:=30000;
For CycI:=1 To 50 Do
Used[CycI]:=False;

ReadLn(V,N);
For CycI:=1 To N Do
ReadLn(Something[CycI]);
Find(V,0);
WriteLn(Best);
End.
{另:这道题好像可以用动态规划}
...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
间谍 2001-12-09
  • 打赏
  • 举报
回复
to 海星大哥
你说的一等奖是国家一等还是省一等呢?我一直对分区联赛的事很糊涂,请你详细讲讲他的整个评奖过程好吗?以及哪个奖才有保送资格?
minkerui 2001-12-09
  • 打赏
  • 举报
回复
谢谢海星!
starfish 2001-12-09
  • 打赏
  • 举报
回复
大家靠得如何呀?就算没有拿到一等奖也不要灰心,竞赛不能代表一切。通过参加竞赛能力得到提高才是最重要的
小乖 2001-12-09
  • 打赏
  • 举报
回复
说实话,真的很简单

但是我第一次参加,没经验..

失掉了好多分..
间谍 2001-12-08
  • 打赏
  • 举报
回复
一元三次方程,数的划分,删除多余单词,car的旅行路线
minkerui 2001-12-08
  • 打赏
  • 举报
回复
三题一百多行应该说不多啊!另外你们的题目是什么啊?
间谍 2001-12-08
  • 打赏
  • 举报
回复
我是提高组的,每三题就写了一百多行,好麻烦。第四题也写了一百多行,更麻烦。前两道题还可以

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧