zoukankan      html  css  js  c++  java
  • 【Luogu1876】开灯(数论)

    【Luogu1876】开灯(数论)

    题面

    题目描述

    首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来……直到第N个人为止。

    给定N,求N轮之后,还有哪几盏是开着的。

    输入输出格式

    输入格式:

    一个数N,表示灯的个数和操作的轮数

    输出格式:

    若干数,表示开着的电灯编号

    说明

    1<=N<=2^40

    题解

    凭什么这道题目是入门难度!!!!
    就因为代码简单????
    想一想,一开始所有的灯都是关着的,
    如果被操控若干次后,灯开着
    则意味着灯被操控了奇数次
    而一个灯被操控的次数是他的约数的个数
    一个数(n=p_1^{a_1}*p_2^{a_2}...p_k^{a_k})
    的约数个数是((a_1+1)(a_2+1)...(a_k+1))
    而且这个数是奇数
    意味这所有的(a_i)都是偶数
    也就是说,(n=m^2)
    其中(m=p_1^{a_1/2}*p_2^{a_2/2}...p_k^{a_k/2})
    所以,所有的最终的满足条件的(n)都是完全平方数

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    using namespace std;
    long long n;
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=sqrt(n);++i)
    		printf("%lld ",1ll*i*i);
    	puts("");
    	return 0;
    }
    
    
  • 相关阅读:
    C# Assembly 反射
    C# Assembly 反射
    为C#自定义控件添加自定义事件
    为C#自定义控件添加自定义事件
    redis5.0的槽点迁移,随意玩(单机迁移集群)
    redis5.0的槽点迁移,随意玩(单机迁移集群)
    []MongoDB优化的几点原则
    []MongoDB优化的几点原则
    当MongoDB遇见Spark
    当MongoDB遇见Spark
  • 原文地址:https://www.cnblogs.com/cjyyb/p/7799081.html
Copyright © 2011-2022 走看看