求助,为什么用自定义函数会超时

B2092 开关灯

customr @ 2023-01-09 11:43:02


#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int a;

void fun(int a){
  if (a==0){
   a=1;
  }else if(a==1){
    a=0;
  }
}

int main()
{
   int n;
   int a[50007];

cin>>n;
    for(int i=1;i<=n;i++){
        a[i]=1;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(j%i==0){
                fun(a[j]);
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        if(a[i]==0){//统计关灯
            cout<<i<<" ";
        }
    }
 return 0;

}

by Hongzixuan0922 @ 2023-01-09 11:46:53

可以直接输出范围内的完全平方数


by juruo_zxt @ 2023-01-09 11:47:53

lz,你这个不是超时,是全wa


by SkyWave @ 2023-01-09 11:51:17

@customr 函数里的是形参,改变不了传递进去的变量的值,你需要改成引用


by customr @ 2023-01-09 14:05:28

@SkyWave 好的,我试试


by Pink_Cut_Tree @ 2023-01-21 09:08:03

@customr 建议用

bool

型函数


|