求指教,怎么老提交都是错误啊?
pascal吧
全部回复
仅看楼主
level 2
成风_2011 楼主
题目描述
有n盏灯,放在一排,从1到n依次顺序编号。有m个人也从1到m依次顺序编号。第1个人(1号)将灯全部关闭;第2个人(2号)将凡是2的倍数的灯打开;第3个人(3号)将凡是3的倍数的灯作相反处理(该灯如是打开的,则将它关闭;如是关闭的,则将它打开)。以后的人都和3号一样,将凡是自己编号倍数的灯作相反处理。试计算当第m个人操作后,哪几盏灯是亮的?
输入
从键盘输入n、m的值。(n、m均为正整数,且n>=m)
输出
在同一行输出亮着的灯的编号。(没有灯亮则输出"NO")
样例输入5 3样例输出2 3 4
我的程序:
Var
n,m,i,j:integer;
a:array [1..100] of boolean;
begin
readln(n,m);
FOR i:=1 to n do a[i]:=FALSE;
for i:=2 to m do
begin
j:=i;
while j<=n do
begin
if (j mod i=0) then a[j]:=not a[j];
j:=j+1;
end;
end;
j:=0;
for i:=1 TO N DO
if a[i]=true then
begin
write(i:5);
j:=j+1;
end;
if j=0 then write(*NO*);
END.
2014年10月21日 15点10分 1
level 10
数组的逻辑值一直没有改变啊、false和true
2014年10月22日 02点10分 2
if (j mod i=0) then a[j]:=not a[j];这句就是拿来对灯的状态变化吧
2014年10月22日 06点10分
level 10
错误太多啦
2014年10月22日 02点10分 3
请指出,非常感谢
2014年10月22日 08点10分
level 12
2014年10月22日 05点10分 4
1