zoukankan      html  css  js  c++  java
  • P1876 开灯

    对于每一个数n,除非它是完全平方数,否则它一定有偶数个因子。

    因为如果i是n的因子,那么n/i也一定是n的因子。这样,n的因子都是成对出现的,所以n有偶数个因子

    但是,有一种特殊情况,即n/i=i。由于i和n/i是同一个数,因子只能是一个,这时n的因子就是奇数个。

    把n/i=i变形,得n=i*i,即n是完全平方数,所以只有完全平方数有奇数个因子。

    对于本题,由于灯只有两种状态(开或关,可类比于奇数和偶数),而初始状态是关的,而每个灯泡如果能被人的编号整除,状态就会变化。

    把整个过程看成一个整体,也就是只有这一盏灯的因数的编号的人,才会按开关。由于灯的开关按偶数次状态不变,所以,灯的开关只有按奇数次,才会开。

    发现问题和上述提到的只有完全平方数有奇数个因子的问题是一样的,也就是如果灯的编号是完全平方数,那么它会被按奇数次,最后就是开着的。

    LL n;
    
    int main()
    {
        cin>>n;
    
        for(int i=1;i<=n/i;i++)
            cout<<i*i<<' ';
        cout<<endl;
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    伪静态
    query 文件提交 +php后台入库
    PHP实现URL长连接转短连接方法
    通过经纬度获取所属城市信息
    PHP 学习之路1
    Linux云服务器安装tomcat
    linux下svn服务器搭建步骤
    HttpServletrequest 与HttpServletResponse总结
    HTML5基础
    Ajax相关总结
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14615324.html
Copyright © 2011-2022 走看看