站外题求解
  • 板块灌水区
  • 楼主calgary
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/8 14:48
  • 上次更新2024/8/8 15:41:48
查看原帖
站外题求解
1251393
calgary楼主2024/8/8 14:48

1、开关灯 有n盏灯从1到n编号,每盏灯一个开关,每按一次灯会打开或关闭,初始时关闭。 有n个酒鬼酒后无聊玩起了开关灯游戏,第一个人会按下所有开关;第二个人会按下2的倍数的灯的开关;第三个人会按下3的倍数的灯的开关;以此类推,直到第n个人按下n的倍数的灯的开关。 但是玩了一会儿就觉得无聊不想玩了 这时一个酒鬼突然说,你们谁知道如果游戏继续玩,直至第n个人按下第n盏灯的开关后,编号为x的灯是开的还是关的? 其他酒鬼有说开着的,有说关着的,吵的不可开交,你能告诉他们吗?

输入格式 一行三个整数,n,x。

输出格式 1或0(1表示开,0表示关)

我的代码TLE了

#include <bits/stdc++.h>
using namespace std;
int calFactorNum(long long num) {
    unordered_map<int, int> umap; 
    long long x = num;
    for (int i = 2; i * i <= x; i++) {
        while (x % i == 0) {
            x /= i;
            umap[i]++;
        }
    }
    if (x > 1) 
        umap[x]++;
    int res = 1;
    for (auto it: umap) {
        res *= (it.second + 1);
    }
    //cout << "factor num:" << res << endl;
    return res;
}

int main(){
    long long a,s;
    cin>>a>>s;bool b=0;
//for(int i=2;i<s;i++){
    //if(s%i==0)b=!b;
    //}
    //printf("%d",b);
    cout<<b+calFactorNum(s)%2;
    return 0;
}

玄1关

2024/8/8 14:48
加载中...