pascal简单程序找错

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:06:11
描述 Description
输入一个自然数n(n<10^2000),表示1到n共n个自然数排成一列,你要在每一个数前添上+或-,要使得添加符号后这个代数式的值最小且非负.

输入格式 Input Format
一个数,n.

输出格式 Output Format
一个数,即最小非负值。

参考:
var n,code:integer;
st:ansistring;
begin
readln(st);
val(copy(st,length(st)-1,2),n,code);
if (n mod 4 =1) or (n mod 4=2) then writeln(1) else writeln(0);
end.

我写的:
var a:longinr; b:0..3;
begin
read(a);
case a mod 4 of
1,3:write('1');
0,2:write('0');
end;
end.

为什么我写的就不对...
为什么参考里面要写用字符呢.,,题目明明说的是要输入一个数字..
为什么呢

这个题好熟啊~~~~~~~~~~~~~~~~~~~~~~~
(我出的耶,vijos1141)
我是LK~~~~~~~~~~~~~~~~~~~~~~~~~~~
可以vijos站内短信联系.
你看一下数据规模:n<10^2000
longint 显然小了,存不下(longint<2^31)
而又由于是mod 4 对于任意一个数 n
n mod 4= ( n的后两位) mod 4;
所以要用字符读入,取后两位mod 4就可以了。
(string也小了,用ansistring);

:请严格按pascal语言的语法:格式执行.好歹;你的语句不长!!!
逐条审查;我想:问题不大,十分钟的事;不然,今后.怎么[搞程序设计与开发]呀!!
要相信自已就是【行!行!行!】
祝成功!

var n:longint; b:0..3; //是longint吧
begin
readln(n);
case n mod 4 of
1,3:writeln('1');
0,2:writeln('0');
end;
end.

10^2000用longint是装不下的!!!!!
必须用高精度!!!!