zoukankan      html  css  js  c++  java
  • 51nod 2489 小b和灯泡

    题目链接:http://class.51nod.com/Challenge/Problem.html#problemId=2489

    一、题目描述

    小b有n个关闭的灯泡,编号为1...n。

    小b会进行n轮操作,第i轮她会将编号为i的倍数的灯泡的开关状态取反,即开变成关,关变成开。

    求n轮操作后,有多少灯泡是亮着的。

    输入:

    输入一个数字表示灯泡数n,其中1<n≤10000000

    输出:

    输出一个数字表示最终亮着的灯泡数

    样例输入:

    3

    样例输出:

    1

    二、思路描述

    用暴力的方法肯定会超时的,所以肯定不可以

    对于第1个灯泡,第1次操作会反转开关。最终状态是开

    对于第2个灯泡,第1、2次操作会反转开关。最终状态是关

    对于第3个灯泡,第1、3次操作会反转开关。最终状态是关

    对于第4个灯泡,第1、2、4​次操作会反转开关。最终状态是开

    对于第i个灯泡,第i的因子次操作都会使开关反转。

    以因子个数为偶数的最终状态是关,因子个数为奇数的最终状态是开。只有完全平方数的因子数是奇数。

    因为如果A是C的因数,则C/A也是C的因数。因此因数总是成对出现的,只有当C/A=A时,C的因数个数才可能是奇数。

    所以只需要统计出1-n中有多少个完全平方数即可

    三、代码

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int main(){
        int n, ans=0;
        cin >> n;
        for(int i = 1;i*i <= n;i++){
            ans++;
        }
        cout << ans << endl;
        return 0;
    }

     

  • 相关阅读:
    17 盒子模型
    16 input默认样式清除
    15 组合选择器
    14 CSS权重深入
    13 CSS样式权重问题
    12 子代选择器和后代选择器
    11 CSS的三种引入方式和基本选择器
    10 table标签
    NOIP1998拼数
    NOIP1998车站
  • 原文地址:https://www.cnblogs.com/elisa02/p/12813085.html
Copyright © 2011-2022 走看看