欢迎光临散文网 会员登陆 & 注册

C++求解

2022-09-14 18:46 作者:讽刺派数学家  | 我要投稿

//有n个人,编号为1~n。开始时,所有人都站着,

//接着第2个及2的倍数的人坐下,

//然后,第3个人及3的倍数的人按相反的操作

//(站的人坐下,坐的人站起来),

//依此类推,一共操作到第k人及k的倍数,

//问最后哪些人站着?

//输入n和k,输出站着人的编号(k≤n≤10000)

//输入样例:

//7   3

//输出样例:

//1   5   6   7

#include<bits/stdc++.h>

using namespace std;

int main()

{

         const int N=1e4;

         int a[N];//0表站立,1表坐

         int n,k;

         cin>>n>>k;

         for(int i=2;i<=k;i++)//每次变的人的始序号加1

         {

                   for(int j=1;j<=n;j++)//???  不理解

                   {

                            if(j%i==0)   a[j]=!a[j];//取反;     ;不理解

                   }       

         }

         for(int i=1; i<=n; i++)//???  不理解

         {

                   if(a[i]==0) cout<<i<<" ";//如果站立,输出序号

    }

    return 0;

}


C++求解的评论 (共 条)

分享到微博请遵守国家法律