求大佬看看为啥只有10分

B2092 开关灯

SD2441856574 @ 2023-10-18 19:32:29

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

int A[5001];
int n;

int main(){
    cin >> n;
    //初始把灯全打开
    for(int i = 1;i <= n;i++)A[i] = 1;

    //第一层循环:第i个人进行开关灯
    //第二层循环:从1到n进行检索满足倍数关系:进行开关灯
    for(int i = 1;i <= n;i++) {
        for(int j = 1;j <= n;j++){
            if(j%i==0) A[i] = (-1)*A[i];
        }
    }
    for(int i = 1;i <= n; i++) {
        if (A[i] == -1) cout << i << " ";
    }
    return 0;
}

by Kazeno_Akina @ 2023-10-18 19:46:27

A[i]=(-1)*A[i] 改成 A[j]=(-1)*A[j] 就可以了。


by _jiuye_ @ 2023-11-08 21:36:35

你这有点麻烦(脑瓜子上),给你看下我的

#include<bits/stdc++.h>
using namespace std;
bool a[1000000];
int main()
{
    int n,s=0;
    cin>>n;
    for(int i=2;i<=n;i++)
    {
        for(int j=i;j<=n;j+=i)
        {
            a[j]=!a[j];
        }
    }
    for(int i=1;i<=n;i++)
        if(a[i]==0)
            cout<<i<<" ";
}

|