开灯问题 学习
来源:互联网 发布:网络攻击方式 编辑:程序博客网 时间:2024/06/05 10:57
#include <cstdio>#include <string.h>#include<iostream>#define MAXN 1000 + 10using namespace std;int a[MAXN]; //数组a放在函数外面才可将其定义的很大;int main() //从数组a 复制k个元素到数组b 用memcpy(b,a,sizeof(int/double)*k) 全复制 memcpy(b,a,sizeof(a)){ int n,k,i,j,first = 1;//用于判断是否为带输出变量的第一个。 memset(a,0,sizeof(a));// memset(s,0,sizeof(a)) 作用把数组a 清零 在 cstring中定义 scanf("%d%d",&n ,&k);//n盏灯 k个人 for(i=1; i<=k;i++) { for(j=1;j<=n;j++) { if(j%i==0) a[j]=!a[j];//开闭操作 } } for(i=1;i<=n;i++) { if(a[i]) { if(first) first=0;//找到首位后 first为0 以后执行else else printf(" "); printf("%d",i); } } printf("\n"); return 0;}