Switch Game :因子数
Posted 52dxer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Switch Game :因子数相关的知识,希望对你有一定的参考价值。
A - Switch Game
Problem Description
There are many lamps in a line. All of them are off at first. A series of operations are carried out on these lamps. On the i-th operation, the lamps whose numbers are the multiple of i change the condition ( on to off and off to on ).
Input
Each test case contains only a number n ( 0< n<= 10^5) in a line.
Output
Output the condition of the n-th lamp after infinity operations ( 0 - off, 1 - on ).
Sample Input
1 5
Sample Output
1 0
Hint
Consider the second test case The initial condition : 0 0 0 0 0 … After the first operation : 1 1 1 1 1 … After the second operation : 1 0 1 0 1 … After the third operation : 1 0 0 0 1 … After the fourth operation : 1 0 0 1 1 … After the fifth operation : 1 0 0 1 0 … The later operations cannot change the condition of the fifth lamp any more. So the answer is 0.
题目描述:输入一个n,取i从1到n,在1~n中,是i的倍数,值就变一次,求最后变换完后第n个数的值。
No.1:查找含有多少因子
#include<iostream> #include<algorithm> using namespace std; int main() { int n,ans; while (cin >> n) { ans = 2; if (n <= 3)cout<<1<<endl; else { for (int i = 2; i*i<= n; i++) { //枚举含有几个因子 if (n%i == 0) { if (i*i == n)ans++; // else ans += 2; //如果不是i*i,那除了i是因子,n/i也是,所以上边枚举到i*i就可以了。 } } if (ans & 1)cout<<1<<endl; else cout<<0<<endl; } } return 0; }
No.2:写博客时刚想到,可以直接判断n是不是某个整数的平方,是的话,因子肯定为奇数,所以结果为1.,不是结果为0
#include<iostream> #include<algorithm> using namespace std; int main() { double n,ans; while (cin >> n) { int ans=0; for(int i=1;i<400;i++){ //400*400就大于1e5了 if(i*i==n)ans=1; } if(ans)cout<<"1 "; else cout<<"0 "; } return 0; }
以上是关于Switch Game :因子数的主要内容,如果未能解决你的问题,请参考以下文章
UVA 11859 Division Game[Nim游戏]
Codeforces 850C E. Arpa and a game with Mojtaba
HDU_3071 Gcd & Lcm game 素数分解 + 线段树 + 状压