一个C程序问题,N个同学拉N盏灯,出错!
发布网友
发布时间:2024-05-14 18:13
我来回答
共2个回答
热心网友
时间:2024-07-14 22:22
temp=temp+i;
lamp[temp]=1-lamp[temp];
这两句换下位置就可以运行了。因为加了i之后temp可能越界了就。
P.S.这个题这么做会TLE。
应该是这样的:对于特定的某一盏灯m,当且仅当m%i==0时,编号为i的同学会改变它的状态。所以,编号为m的灯会被改变(m的因数个数)次状态。一个数的因数是成对存在的,只有完全平方数的因数个数因为其一对因数相等会是奇数,所以,这个题就转换成了,小于n的完全平方数有多少个,很明显结果是sqrt(n)取整了。
热心网友
时间:2024-07-14 22:23
for(int i=1;i<=N;i++) //i=1..N
{
while(temp<N) //temp=1...N
{
temp=temp+i; //temp=1....2N
lamp[temp]=1-lamp[temp]; 当超过N时数组出现了越界,所以。。。。
说一下你的算法思想吧,没看懂你的意思