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 素数分解 + 线段树 + 状压

Codeforces 850C Arpa and a game with Mojtaba

A. Game 23 1000 / 分解因子

hdu 4630 No Pain No Game (线段树+离线)