zoukankan      html  css  js  c++  java
  • 19-灯泡的开闭

    /* 题目内容:

    一百个灯泡排成一排,第一轮将所有灯泡打开;
    第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,
    第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。
    依次类推,第n轮结束的时候,还有几盏灯泡亮着。

    输入描述

    程序输入n( 0 < n < 101)

    输出描述

    输出亮的灯数。

    输入样例

    2

    输出样例

    50
    */
    /*一道改编面试题:
    一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。依次类推,第100轮结束的时候,还有几盏灯泡亮着。
    思路:

    1.对于每盏灯,拉动的次数是奇数时,灯就是亮着的,拉动的次数是偶数时,灯就是关着的。
    2.每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。
    3.1—100这100个数中有哪几个数,约数的个数是奇数。
    4. 根据提示已经可以看出,这个问题的实质就是找出有多少个灯泡的排位数拥有奇数个因子。每拥有一个因子,
    到这个因子数的那一轮时,这个灯泡就会被转换开关状态。
    5. 比如第1轮,因为所有100个数字都有因数1,所以全部被打开;第2轮,只有那些拥有2这个因子、能被2整除的数字的灯
    泡转换状态被关掉;第3轮,只有那些拥有3这个因子、能被3整除的数字的灯泡被转换状态。以此类推,如果灯泡排位数拥有奇数个因子,意味着它被打开和关上奇数次,那它就最终还是被打开的状态,如果灯泡排位数拥有偶数个因子,那它最终就是被关上的状态

    我们知道:一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。

    每一轮确定了一个不变的,所以这当100轮时全部确定完,100盏灯中有10盏灯是亮着的,它们的编号分别是:1、4、9、16、25、36、49、64、81、100
    */

    #include <iostream>
    using namespace std;
    int a[100];

    int main(){
        int n, count = 0;     
        cin >> n;    
        for(int i = 1; i <= n; i++){   //暴力
            for(int j = i; j <= 100; j = j + i)
                a[j] = (a[j] == 0 ? 1 : 0);    
        }
        for(int i = 1; i <= 100; i++)
            if(a[i] == 1)
                count++;
        cout << count;
        return 0;
    }

  • 相关阅读:
    关于Git的一些常规操作
    .Net 常用ORM框架对比:EF Core、FreeSql、SqlSuger (下篇)
    Myeclipse打开许多JSP文件或者js文件之后非常卡-------的解决办法
    单点登录常用生成token的操作-----UUID.randomUUID().toString() 简介
    如何使用时间复杂度和空间复杂度来区分算法的效率?
    自定义注解的简单使用
    企业中常用的Git和Svn比较。
    框架中常见的注解分析
    处理大数据流常用的三种Apache框架:Storm、Spark和Samza。(主要介绍Storm)
    养生食谱
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7429754.html
Copyright © 2011-2022 走看看