UVa 10110 -- Light, more light

本文讨论了一种关于灯的状态改变算法,通过分析灯的状态变化规律,利用平方数的特性来简化因子数的计算过程,从而高效地解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意:有一串灯,有打开和关闭两种状态,开始状态为关闭,一个人第i次走过这些灯,只有这些灯编号能整除i的灯的状态可以被改变(走一次代表一个来回,回来的途中不改变灯的状态)

思路分析:给出n(第i趟),也就是求n的因子数,当n的因子数为奇数时灯的状态是被打开的,否则因子数为偶数,一次关,一次开,状态不改变。

正常求出n的因子数在判断因子数的奇偶性,会超时,有一种很简单的算法,就是只有平方数的因数是奇数,直接判断这个数是不是平方数就好。

#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
    long long n;
    while(scanf("%lld",&n)==1){
        if(n==0)
            break;
        long long a=(long long)sqrt(n+0.5);
        if(a*a==n)
            printf("yes\n");
        else printf("no\n");
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值