求NOIP2011复赛普及组题目详解 PASCAL
主要问题是第1题如果有-0,第2题Linux系统的回车符的ASCII码是否13,和第4题完全不会……...
主要问题是第1题如果有-0,第2题Linux系统的回车符的ASCII码是否13,和第4题完全不会……
展开
5个回答
展开全部
第一题注意负数,注意有可能出现-0(虽然我也不确定有没有);
第二题一个单词一个单词地读(用空格隔断),读一个比较一个;
第三题模拟,不断排序;(但我估计会超时)
第四题用分治,先寻找括号外的加号,没有的话就寻找括号外的乘号,把找到的那个地方的左右两边分别计算在合在一起。注意去括号,注意最后的递归边界。计算时住随时mod 10007(可以用数学的余数定律证明这样不会改变结果)。但着也不能过全,递归到十二万多层就崩溃了。不过至少可以过一半
第二题一个单词一个单词地读(用空格隔断),读一个比较一个;
第三题模拟,不断排序;(但我估计会超时)
第四题用分治,先寻找括号外的加号,没有的话就寻找括号外的乘号,把找到的那个地方的左右两边分别计算在合在一起。注意去括号,注意最后的递归边界。计算时住随时mod 10007(可以用数学的余数定律证明这样不会改变结果)。但着也不能过全,递归到十二万多层就崩溃了。不过至少可以过一半
更多追问追答
追问
第四题不懂……
追答
第四题用栈可以做全,开2个栈,一个存运算符,一个存操作数。操作数为array[0..1] of word类型,表示结果为0和为1的种数。运算时注意优先级和括号的处理。但这种算法对普及组来说确实太难了,很难理解
展开全部
第一题先注意负号,再去0,再mod 10倒着输出
第二题从头到尾比较就行了注意单词必须到文末或后面是空格
第三题机械模拟不断快排就行了
第四题我没写出来,骗分吧
第二题从头到尾比较就行了注意单词必须到文末或后面是空格
第三题机械模拟不断快排就行了
第四题我没写出来,骗分吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第三题循环50遍每次qs显然超时,实际上纸用几遍冒泡即可完成 这样就可以把O(nlogn)的算法降维到O(n)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题:
var n,i,m,l:longint;
s,x:string;
v:array[1..11] of char;
begin
read(n);
if n<=0 then write('-');
str(abs(n),s);
m:=length(s);
for i :=1 to m do
v[i]:=s[m-i+1];
val(v,l);
write(l);
end.
var n,i,m,l:longint;
s,x:string;
v:array[1..11] of char;
begin
read(n);
if n<=0 then write('-');
str(abs(n),s);
m:=length(s);
for i :=1 to m do
v[i]:=s[m-i+1];
val(v,l);
write(l);
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像都要用长整形
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询