奇怪的是,此题一直UKE或者OLE,帮忙解个题吧
  • 板块学术版
  • 楼主snowfox_chan
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/10/23 19:35
  • 上次更新2023/11/5 10:05:34
查看原帖
奇怪的是,此题一直UKE或者OLE,帮忙解个题吧
237738
snowfox_chan楼主2020/10/23 19:35

开关门

时间限制:1秒 内存限制:128M

题目描述

假设有N扇门(N<=5000),将这些门按照其顺序从1开始进行编号,初始状态下全部的门都是开着的;这X个人也从1开始进行依次编号。 第1个人会把这些门都关上,第2个人会将编号为2的倍数的门打开,从第3个人开始,依次将这个人所对应编号倍数的门做相反的处理(打开的关上,关上的再打开)。 请问:X个人操作完毕之后,有哪些门是关上的,从小到大输出编号,其间用逗号隔开。

输入描述

输入两个数N和X,中间用空格隔开。

输出描述

依次输出关闭的门的编号,其间用逗号隔开。

样例

输入

10 10

输出

1,4,9

代码

#include<bits/stdc++.h>
using namespace std;
int d[5000];
void door(int people,int much){
    if(people==1){
        for(int i=1;i<=much;i++){
            d[i]=0;
        }
        return;
    }
    for(int i=1;i<=much;i++){
        if(i%people==0){
            !d[i];
        }
    }
    return;
}
int main(){
    int N,X,t=0;
    cin>>N>>X;
    for(int i=1;i<=N;i++){
        d[i]=1;
    }
    for(int i=1;i<=X;i++){
        door(i,N);
    }
    for(int i=1;i<=N;i++){
        if(d[i]==0){
            if(t==0){
                cout<<i;
                t++;
            }else{
                cout<<","<<i;
            }
        }
    }
    return 0;
}

请问什么情况

2020/10/23 19:35
加载中...