Bulb Switcher
2016-07-10 11:14
197 查看
这个问题很有意思
答案是
public int BulbSwitch(int n)
{
return (int)Math.Sqrt(n);
}证明过程如下:
先看每个数据P是否亮着,然后统计从1到N的所有亮着的总数。
假设P=P1的K1次方*P2的K2次方.....*Pn的Kn次方。其中,P1到Pn都是排序的质数。
比如6=2的1次方*3的一次方
开关次数N=(K1+1)(K2+1)....(Kn+1)
比如6就是1,2,3,6,一共四个
如果N为偶数,则最后P为关着,否则为开着。
如果N为奇数,则说明K1,K2到Kn都为偶数
则说明P为某个数的平方
所以,从1到N,只要数是某个数的平方,则该数为开着。
所以得到答案。
答案是
public int BulbSwitch(int n)
{
return (int)Math.Sqrt(n);
}证明过程如下:
先看每个数据P是否亮着,然后统计从1到N的所有亮着的总数。
假设P=P1的K1次方*P2的K2次方.....*Pn的Kn次方。其中,P1到Pn都是排序的质数。
比如6=2的1次方*3的一次方
开关次数N=(K1+1)(K2+1)....(Kn+1)
比如6就是1,2,3,6,一共四个
如果N为偶数,则最后P为关着,否则为开着。
如果N为奇数,则说明K1,K2到Kn都为偶数
则说明P为某个数的平方
所以,从1到N,只要数是某个数的平方,则该数为开着。
所以得到答案。
相关文章推荐
- Android Studio 创建Drawable资源Shape文件
- 习题:codevs 2822 爱在心中 解题报告
- 1.6 贪婪算法
- Java-static关键字详解
- 习题:codevs 2822 爱在心中 解题报告
- Sum of Two Integers
- shell中的各种括号的使用方法
- 最近公共祖先学习小结1——在线倍增
- MySQL key与index的区别
- java web开发之实现购物车功能
- Linux服务器升级安装OPENSSH
- 一种新型内存SCM(Storage Class Memory)的简单介绍
- ManyToMany(基于注解)使用之进阶(中级版)
- centos7系统下安装memcache数据库
- 【MyBatis框架】mybatis逆向工程自动生成代码
- N - 人见人爱A-B Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- 常见SOC启动流程分析
- postgresql----几何类型和函数
- CentOS 配置vncserver
- SqlSugar轻量ORM