Switch Game<开灯问题>关于n以内的完全平方数个数求解
2017-07-29 17:24
411 查看
Switch Game
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15011 Accepted Submission(s): 9160
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
Hinthint
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.
Author
LL
Source
校庆杯Warm Up
其实,开灯这一类的题目我们都已经做了几遍了,最开始用的模拟可以AC,但是今天打月赛的时候做了,理解了一个非常好得方法
解题思路:
考虑哪些位置的a[i]最终为1,最终为1说明此位置被反转了奇数次,即i有奇数个因子,而有且仅有完全平方数有奇数个因子,所以答案为sqrt(n)。
这里解释一下为什么对于n以内的数只含有sqrt(n)个完全平方数
首先,所谓的完全平方数:完全平方即用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数
所以我们可以理解,在N以内的最大完全平方因子为sqrt(n),那么,因为所有的数都能生成一个完全平方数,所以从1到sqrt(n)都能生成一个小于等于N的完全平方数,所以我们取N以内的完全平方数个数,只要向下取整求得sqrt(N)即可
#include <iostream> #include <cstring> #include <stack> #include <cstdio> #include <cmath> #include <queue> #include <algorithm> #include <vector> #include <set> #include <map> const double eps=1e-8; const double PI=acos(-1.0); using namespace std; long long int a[70]; int main() { double n; while(~scanf("%lf",&n)){ printf("%.0f\n",floor(sqrt(n))); } return 0; } /********************************************************************** Problem: 1970 User: 201501080127 Language: C++ Result: AC Time:128 ms Memory:2032 kb **********************************************************************/
相关文章推荐
- 关于jsp中<input type="file">获取路径问文件名,获取完全路径问题
- 关于jsp中<input type="file">获取路径问文件名,获取完全路径问题
- 关于include<vector>编译错误问题
- 关于struts2中<s:action>的问题
- 关于easyui使用<iframe />与Dialog弹框问题
- html <"input "/>关于value 空格后的内容消失的问题
- nil Nil null @"" 关于nil和 null和NSNull的区别及相关问题||(null) <null> nil 问题
- 关于maven多模块聚合项目部署等问题--<Jenkins>
- 关于<meta>的各种用处以及移动端的常见问题
- 关于<input type="text">不能显示空格的问题
- <项目一>请教一个关于获取post json数据的问题
- 关于八数码问题中的状态判重的三种解决方法(编码、hash、<set>)
- 关于<input type="text">不能显示空格的问题
- <OJ_Sicily>Coins完全背包问题
- 关于八数码问题中的状态判重的三种解决方法(编码、hash、<set>)
- 关于博弈论中的一硬币正反问题的分析<二>
- 关于‹和›转义成< 和>的问题
- 关于“socket:<10106> 无法加载或初始化请求的服务提供程序”问题的解决方法
- 关于ArrayList<>问题解答
- 关于luci的几个问题<二>