zoukankan      html  css  js  c++  java
  • 【2032】灯的开关问题

    Time Limit: 20 second
    Memory Limit: 20 MB

    问题描述有n盏灯放在一排,从1到n依次编号,有n个人也从1到n依次编号,第一个人将灯全部打开,第二个人将凡是2的倍数的灯全部关闭,第三个人将凡是3的倍数的灯作相反处理,第4、5、……、n个人都把自己编号的倍数的灯作相反处理。问第n个人走过后,哪些灯是开着的?(要求不用数组)

    Input

    输入仅一行
    输入灯的盏数n(1≤n≤32767)。

    Output

    输出开着的灯的序号。

    Sample Input

    20
    
    

    Sample Output

    1:open
    4:open
    9:open
    16:open
    
     

    【题解】

    这题和之前的扑克问题是一样的。每个灯先都被打开。这对应每个数都是1的倍数。

    倍数!

    36 : 1 36 2 18 3 12 4 9 6  这里可以看到36的因子总数为奇数。只会被操作奇数次,因子最后36号灯会被打开。以此类推可以得出只要灯的序号是完全平方数 它最后就一定是打开着的。

    一直i*i  然后i++,判断一下i^2有没有超过n就好。

    【代码】

    #include <cstdio>
    
    const int MAXN = 30000;
    
    int n;
    
    void input_data()
    {
    	scanf("%d",&n);
    }
    
    void get_ans()
    {
    	int i = 1;
    	int t = i*i; //不断获取i*i的值 然后和n比较,只要没超过n i就一直递增。 
    	while (t <= n)
    		{
    			printf("%d:open
    ",t);
    			i++;
    			t = i*i;
    		}
    }
    
    int main()
    {
    	input_data();
    	get_ans();
    	return 0;	
    }


     

  • 相关阅读:
    heapq of python
    array of python
    Unittest of Python
    事件驱动型工作流 vs 引擎型工作流
    airflow
    WPF 调试触发器
    WPF 使用Popup和TreeView实现树状下拉框
    Oracle : ORA 00933: SQL command not properly ended
    PostgreSQL && PostGIS
    基于ArcGIS开发3D立方体空间关系判断
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632470.html
Copyright © 2011-2022 走看看