zoukankan      html  css  js  c++  java
  • GHOJ 145 灯的开关状态

    题目描述

            有N个灯放在一排,从1到N依次顺序编号。有N个人也从1到N依次编号。1号将灯全部关闭,2号将凡是2的倍数的灯打开;3号将凡是3的倍数的灯作相反处理(该灯如为打开的,则将它关闭;如关闭的,则将它打开)。以后的人都和3号一样,将凡是自己编号倍数的灯作相反处理。

            编程实现:第N个人操作后,按顺序输出灯的状态。(1表示灯打开,0表示灯关闭)

     

    输入输出格式

    输入格式

            一行,一个整数n,表示灯的个数。(1≤n≤5000000)

     

    输出格式

            一行01序列,表示各盏灯的状态,中间无空格。输入输出样例

     

    输入输出样例

    输入样例

    2

    输出样例

    01

     

    题解

            设一个整数序列S=S1, S2,S3,...Sk使N=S1*Sk=S2*S(k-1)=...……

            显然,一般的k都是偶数,但当N为完全平方数是,因数可以相同,即k为奇数。此时把N看做灯的编号,当k为偶数时,最后结果为1,当k为奇数时,最后结果为0。

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    
    using namespace std;
    
    int n, sn;
    
    int main()
    {
        scanf("%d", &n);
        sn = sqrt(n);
        for(register int i = 1; i <= sn; ++i)
        {
            putchar('0');
            for(register int j = i * i + 1; j < (i + 1) * (i + 1) && j <= n; ++j)
            {
                putchar('1');
            }
        }
        return 0;
    }
    参考程序
  • 相关阅读:
    hdu4971 流-最大权闭包
    hdu4971 流-最大权闭包
    hdu4950 打怪(简单题目)
    hdu4950 打怪(简单题目)
    hdu4941 map交换行列
    hdu4941 map交换行列
    hdu4966 最小树形图(最少辅导花费)
    hdu4966 最小树形图(最少辅导花费)
    hdu4965 巧用矩阵乘法结合律
    POJ 1077 && HDU 1043 Eight A*算法,bfs,康托展开,hash 难度:3
  • 原文地址:https://www.cnblogs.com/kcn999/p/10344690.html
Copyright © 2011-2022 走看看