0
点赞
收藏
分享

微信扫一扫

-翻纸牌-

笙烛 2022-03-19 阅读 66
c++

本题是 2010 年北京市赛原题

五年级一班全体学生做一个游戏,有 nn 张纸牌,每张纸牌上分别标注着 11、22、33、44……nn个数字,初始时纸牌数字面朝上。全班同学先将 11 的倍数的纸牌翻过来,然后再将 22 的倍数的纸牌再翻过来,一直翻到 nn 的倍数的纸牌。统计翻到最后数字面向下的纸牌分别是哪些?

例如,有 11、22、33 张纸牌,开始时纸牌数字面朝上,第一次翻转 11 的倍数,将所有序号为 11 的倍数的纸牌翻转;第二次翻转 22 的倍数,将所有序号是 22 的倍数的纸牌再翻转;第三次翻转 33 的倍数,将所有序号是 33 的倍数纸牌再翻转,翻牌到此结束。最后数字面向下的纸牌是序号为 11 的那张。

输入格式

输入第一行输入数字为 nn,表示有 nn 张纸牌(n\leq 10000n≤10000)。

输出格式

输出数字面向下的纸牌数字。在同一行输出,两个数字之间用一个空格隔开。

格式说明

输出时每行末尾的多余空格,不影响答案正确性

样例输入

3

样例输出

1
#include <iostream>
#include <string>
using namespace std;

int main() {
    int n;
    cin>>n;
    bool a[10001]={0};
    for(int i=1;i<=n;i++){
        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])cout<<i<<" ";
    }
    return 0;
}
举报

相关推荐

0 条评论