pascal高手快来!!!急!!!
var
f:array[1..20] of longint;
i,n,sum:longint;
begin
assign(input,'shulie.in'); reset(input);
assign(output,'shulie.out'); rewrite(output);
readln(n);
f[1]:=1; f[2]:=9; f[3]:=8; f[4]:=7;
for i:=5 to n do
f[i]:=(f[i-1]+f[i-2]+f[i-3]+f[i-4]) mod 10;
for i:=1 to n-1 do
write(f[i],' ');
writeln(f[n]);
sum:=0;
for i:=1 to n do sum:=sum+f[i];
writeln(sum);
close(input); close(output);
end.
做了一个超夸张的,结果程序出错,只过了一组数据。
楼上的说书里有啊,我找一下哦。
算了,给你一个测试批处理吧(自己改的,0-9组测试数据你应该有吧,谷应该给了)
---------------------------
@echo 集训队测试程式 Game2(Pascal/C/CPP)
@echo off
if "%1"=="" goto loop
copy game2%1.in game2.in >nul
echo game2 Test
echo Data %1
time<enter
game2
time<enter
fc game2.out game2%1.out
del game2.in
del game2.out
pause
goto end
:loop
for %%i in (0 1 2 3 4 5 6 7 8 9) do call %0 %%i
:end
问题名称 文件名 输入 输出 时限 分值
序列 sequence.exe sequence.in sequence.out 2s 100
连分数 faction.exe faction.in faction.out 1s 100
词链 link.exe link.in link.out 1s 100
Geodetic集合 geo.exe geo.in geo.out 1s 100
序列(sequence.exe)
问题描述
有一个非递减的整数序列S1,S2,S3,……,Sn+1(Si<=Si+1)。定义序列m1,m2,…,mn¬为S的“M序列”,其中mi=(Si+Si+1)/2。
例如,S=(1, 3, 3, 5),则m=(2, 3, 4)。
现在给你序列m,要你求有多少个S序列的“M序列”是序列m。
输入(sequence.in)
第一行一个整数n,
下接n行,每行一个整数mi
输出(sequence.out)
一个整数,表示有多少个S序列的“M序列”是序列m
样例
sequence.in sequence.out
3
2
5
9
4
样例说明:存在如下四个数列S满足要求:
2,2,8,10;
1,3,7,11;
0,4,6,12;
-1,5,5,13。
数据范围
50%的数据n<=1000,mi<=20000
100%的数据2<=n<=100000,mi<=109.
连分数(faction.exe)
问题描述
Cindy新学了无理数,老师教她了一种用有理数逼进无理数的方法:找到这个无理数相应的无限循环连分数。
例如,
我们可以通过分别取出连分数中的一层、两层、三层、……,而忽略其他部分,这样就可以得到一个有理数序列,我们称之为该连分数的渐近分数序列。黄金分割数 的渐近分数是1/1,1/2,2/3,3/5,5/8,8/13……。
Cindy对其中的连分数形式尤为感兴趣,为了简化,她准备研究的连分数都是如下形式的:
她用一个简单的记号表示这种连分数: 。例如黄金分割数的连分数简记为
对于每一个这样的连分数,都有其相应的渐近分数序列:a1/b¬1,a2/b2,……。现在Cindy的研究中出现了一个连分数 ,她希望你能帮她求出它的渐近分数序列的第m项。请用二元组(am,bm)的形式给出答案,并且对于答案的中的两个数,只需要输出它们模9973的余数即可。
输入(faction.in)
第一行为一个整数n,m,分别表示连分数的循环节长度和需要求的渐近分数的项数。下接n行每行一个整数pi,描述连分数。
输出(faction.out)
空格分隔的两个整数am、bm。
样例
faction.in faction.out
1 6
1 8 13
数据范围
60%的数据,m<=105
100%的数据,n<=10,m <=109
词链(link.exe)
问题描述
给定一个仅包含小写字母的英文单词表,其中每个单词最多包含50个字母。
如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链。例如下面的单词组成了一个词链:
i
int
integer
而下面的单词不组成词链:
integer
intern
请在给定的单词表中取出一些词,组成最长的词链。最长的词链就是包含单词数最多的词链。
数据保证给定的单词表中,单词互不相同,并且单词按字典顺序排列。
输入(link.in)
第一行一个整数n,表示单词表中单词数
下接n行每行一个单词。
输出(link.out)
一个整数,表示最长词链长度。
样例
link.in link.out
5
i
int
integer
intern
internet 4
数据范围
50%的数据,n<=1000
100%的数据,n<=10000
Geodetic集合(geo.exe)
问题描述
图G是一个无向连通图,没有自环,并且两点之间至多只有一条边。我们定义顶点v,u最短路径就是从v到u经过边最少的路径。所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些顶点的集合记作I(v, u)。
我们称集合I(v, u)为一个Geodetic集合。
例如下图中,I(2, 5)={2, 3, 4, 5},I(1, 5)={1, 3, 5},I(2, 4)={2, 4}。
给定一个图G和若干点对v,u,请你分别求出I(v, u)。
输入(geo.in)
第一行两个整数n,m,分别表示图G的顶点数和边数(顶点编号1-n)
下接m行,每行两个整数a,b表示顶点a和b之间有一条无向边。
第m+2行有一个整数k,表示给定的点对数。
下接k行,每行两个整数v,u。
输出(geo.out)
共k行,每行对应输入文件中每一个点对v,u,按顶点编号升序输出I(v, u)。同一行的每个数之间用空格分隔。
样例
geo.in geo.out
5 6
1 2
1 3
2 3
2 4
3 5
4 5
3
2 5
5 1
2 4 2 3 4 5
1 3 5
2 4
数据范围
100%的数据,n<=40
各题简要分析:
sequence序列:
令S序列的第一项为k,那么后面几项就可以写成关于k的多项式:
S1=k
S2=2*m1-k
S3=2*m2-2*m1+k
……
然后根据S序列的非递减性质,有S1<=S2<=S3<=….
所以有
k<=2*m1-k
2*m1-k<=2*m2-2*m1+k
……
可以得到n个关于k的不等式,而且都是有规律的,可以在O(n)的时间内解出形如
a<=k<=b
的结果。
由于k的值和S序列是一一对应的,所以k的取值的个数(b-a)就是满足要求的S序列的个数。
faction连分数:
本题是原创的,重点考察递推和用矩阵乘法优化递推。
由递推式:
k = (m-1) mod n + 1
可得
;
直接按照这个递推式计算,复杂度O(m),预计得分60%。
上面的递推式对应的矩阵运算是:
所以有
其中c是(m mod n)部分的余式矩阵的乘积。
由于计算矩阵幂时间复杂度为O(logm),所以总的算法复杂度是O(n+logm),预计得分100%。
Link词链:
本题用动态规划是容易的,设f(i)表示前i个单词可以构成包含第i个单词的最长词链。
F(i)=max{1,F(j)+1,当word[j]是word[i]的前缀}
Ans=max{F(i)}
这样算法的复杂度是O(n2),预计得分50%。
其实本题有很简单的贪心算法。
用一个栈存储当前的以第i个单词结尾的最长词链,第i+1个单词加在栈的结尾(通过出栈保持栈所存储的是一个词链)。
例如:
i 栈 : i
int 栈: i int
integer 栈: i int interger
intern 栈: i int intern (interger出栈)
internet 栈: i int intern internet
可以证明,在第i个单词插入后,当前在栈中的词链就是包含第i个单词的最长词链。
这样由于每个单词进栈出栈分别一次,所以算法的复杂度是O(n)
贪心算法预计得分100%
Geodetic集合:
本题是由pku上一道试题改编的,考察图的有关知识。算法就是从每个点出发进行BFS扩展,按得到的BFS序列进行递推。
设 min[i, j]为从i到j的最短路长度
设f[i, j]表示从i到j点的最短路覆盖的节点集合,
f[i, j] = f[i, k] U {j} k={1..n} and (min[i, k]+1=min[i, j])and (k,j)存在
对于输入的每个v,u对,输出f[v,u]中的所有点就可以了。
ASCII码排序问题 求高手。。。
这个getchar是用来吞掉每一行结束的回车的,如果没有的话,你的scanf会读取那个回车导致出错。
[php]ascii码>127没明白,高手请教
大于127说明字符为中文 --- 错误。大于127说明为多字节字符。不只是汉字。
高分请教哪位高手能告诉ascII字符转换为井号可以吗?
010 0011 43 23 35 这就是井号的ascii码
请教高手C#如何获取一组字符串的ASCII码?
老办法,迭代,但由类库自由迭代即可。如:System.Text.Encoding.ASCII.GetBytes("string");获得是byte[]结果,每个byte对应一个字符的ASCII。但注意其中不要含有中文,因为ASCII只支持单字符方式。如果存在中文也会被分解为一个byte,而不是多个。注意,ANSI\/Unicode\/Utf-7\/Utf-8\/Utf-16\/Utf-32\/GB...
汇编ASCII 转换
用键盘输入字符(包括数字),显示其 ASCII 码。程序,以及运行截图如下:
怎么在控制台输出扩展ASCII码,也就是128-255的,求高手帮忙!_百度...
控制面板->区域和语言选项->高级->非Unicode程序的语言 修改成英语(美国)然后重新启动。就可以使用后面的这些ascii码了
高分请教ASCII码串转换成字符串的asp代码
先用_分隔,函数用split(strTemp,"_")然后用chr()转换回去,针对你的代码,可以如下写:dim ThisstrTemp,ThisAr,Vstr ThisstrTemp=strToAsc(strValue)ThisAr=split(ThisstrTemp,"_")for i=0 to Ubound(ThisAr)if IsNumeric(ThisAr(i)) then Vstr=Vstr&chr(ThisAr(i))end if next ...
...ASCII码为十进制数48,则表达式为?具体过程?高手来~
sadgdfsgf
...char c ; c=‘a’; c的ASCII代码为97,则在内存中c的值为(?)_百度...
ascll 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表...
请教高手!! 有点混了!!
每个字符对应一个ASCⅡ码,每个ASCⅡ码由(A)位二进制数组成。A、8位 B、7位 C、4位 D、16位 1. ASCII码是一种由-B-位二进制数编码的标准码。A.7 B.8 C.15 D.16 21.ASCII码在计算机中的表示方式为__A__。A.1个字节,最高位为0 B.1个字节,最高位为1 C.7位二进制码,最...
用卓乳宁: 筛,筛完了从小到大判断并标记纯粹素数,某个i位素数是纯粹素数当且仅当该素数去掉最高位剩下的数为纯粹素数.
加查县13772964767: pascal问题..紧急 高手进!!~?
用卓乳宁: program ex; var a,b,c,i:integer; begin readln(n); read(x); a:=x; for i:=1 to n do begin read(x); if x>a then begin a:=x; end; end; writeln(a); end. 绝对能用..试过!!!!
加查县13772964767: 会Pascal编程的进,急啊!?
用卓乳宁: 以Free Pascal举例,首先按Ctrl+F9检查程序是否有错,没错就可以运行程序.然后按Alt+F5来查看运行后的结果.(可能你少了查看结果的这个步骤,才会误认为没反应)
加查县13772964767: PASCAL 高手些帮下忙?
用卓乳宁: 1 数组 array:[0..100] of +变量 集合 record 底下是变量 2 全局变量是开头定义的 局部变量是在过程与函数中定义的 全局变量适用于全部 局部变量只适用与那个过程函数中 3 变参与值参, function(var x:longint):longint; function(x:longingt):longint; ...
加查县13772964767: 急需pascal四色问题解!!!!!高手来!!! - ?
用卓乳宁: program aa; const max=100; var r:array[1..max,1..max] of 0..1; s:array[1..max] of integer; n,a,b:integer; procedure mapcolor; var x,y,k:integer; begin s[1]:=1;x:=2;y:=1; while (y<=4) and (x<=n) do begin k:=1; while (k<x) and (s[k]*r[x,k]<>y) do k:=K+1; if k...
加查县13772964767: 急!!!求Pascal语言的常用基础语句.编程?
用卓乳宁: if语句:if 条件 then 语句. for语句:for 变量:=起始值 to 终值 do 语句. while语句:while 条件 do 语句. repeat语句:repeat语句; end; 输入语句:read,readln 输出语句:write,writeln
加查县13772964767: PASCAL问题,高手紧急求助?
用卓乳宁: var ch:set of'A'..'Z'; c:char; s:ansistring; i:longint; begin readln(s); for i:=1to length(s)do begin c:=upcase(s[i]); ch:=ch+[c]; end; for c:='A'to'Z'do if c in ch then write(c); writeln; end. 集合运算版的 var b:array['A'..'Z']of boolean; i:longint; c:char; s:...
加查县13772964767: Pascal编程!高手速进! - ?
用卓乳宁: Uses math;//需付对方n元,7的m次方看成整钱,比其小的看成零钱 function Pay(n: Integer; m: Integer) :Integer; var i: Integer; v: Integer; x, y: Integer; begin Result := 0; //如果没有更小的零钱 if m = 0 then begin //比较最优方案,及给n元零钱和给7...
加查县13772964767: pascal高精度乘法 - ?
用卓乳宁: 呵呵 这是最基础的啊 主要的过程&数据结构 在下面 const maxn=100; we=10; type arr=array[0..maxn]of longint; procedure cheng(a,b:arr; var c:arr); var i,p,q:longint; begin fillchar(c,sizeof(c),0); for p:=1 to a[0] do for q:=1 to b[0] do begin i:=p+q-1; c[i]:...
加查县13772964767: Pascal 高手求助 - ?
用卓乳宁: 大哥,没那么麻烦,这只有三位数,不需要用过程做,直接穷举就行了. var n,m,min,i,j...