但第三题因为我忘记了二叉树的用法所以没有做起,采用了听天由命的策略^_^
(普及组)
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.
{另:这道题好像可以用动态规划}
7 个解决方案
#1
我是提高组的,每三题就写了一百多行,好麻烦。第四题也写了一百多行,更麻烦。前两道题还可以
#2
三题一百多行应该说不多啊!另外你们的题目是什么啊?
#3
一元三次方程,数的划分,删除多余单词,car的旅行路线
#4
说实话,真的很简单
但是我第一次参加,没经验..
失掉了好多分..
但是我第一次参加,没经验..
失掉了好多分..
#5
大家靠得如何呀?就算没有拿到一等奖也不要灰心,竞赛不能代表一切。通过参加竞赛能力得到提高才是最重要的
#6
谢谢海星!
#7
to 海星大哥
你说的一等奖是国家一等还是省一等呢?我一直对分区联赛的事很糊涂,请你详细讲讲他的整个评奖过程好吗?以及哪个奖才有保送资格?
你说的一等奖是国家一等还是省一等呢?我一直对分区联赛的事很糊涂,请你详细讲讲他的整个评奖过程好吗?以及哪个奖才有保送资格?
#1
我是提高组的,每三题就写了一百多行,好麻烦。第四题也写了一百多行,更麻烦。前两道题还可以
#2
三题一百多行应该说不多啊!另外你们的题目是什么啊?
#3
一元三次方程,数的划分,删除多余单词,car的旅行路线
#4
说实话,真的很简单
但是我第一次参加,没经验..
失掉了好多分..
但是我第一次参加,没经验..
失掉了好多分..
#5
大家靠得如何呀?就算没有拿到一等奖也不要灰心,竞赛不能代表一切。通过参加竞赛能力得到提高才是最重要的
#6
谢谢海星!
#7
to 海星大哥
你说的一等奖是国家一等还是省一等呢?我一直对分区联赛的事很糊涂,请你详细讲讲他的整个评奖过程好吗?以及哪个奖才有保送资格?
你说的一等奖是国家一等还是省一等呢?我一直对分区联赛的事很糊涂,请你详细讲讲他的整个评奖过程好吗?以及哪个奖才有保送资格?