| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 882 人关注过本帖
标题:求开光灯的算法
取消只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
已结贴  问题点数:2 回复次数:3 
求开光灯的算法
问题描述

有n只灯泡排成一条线,编号分别为1,2,...,n。初始状态灯泡都是不亮的。在这些灯泡上执行一系列的开关灯操作。这些操作的编号为1,2,3,.....,第i次操作把编号为i的倍数的灯泡的开关状态变换一下(亮的变成不亮,不亮的变成亮)。

输入

每个测试数据值为包含一个整数n ( 0< n<= 10^5)单独一行构成,由多个测试数据,输入有EOF结束。

输出

对每种情况,输出执行了无穷多次开光灯操作后第n只灯泡的状态。0表示灯不亮,1表示等亮。每个测试数据的输出单独一行。

输入样例

1
5

输出样例

1
0
搜索更多相关主题的帖子: 开光 算法 
2009-11-07 20:50
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
#include<stdio.h>
int main()
{
    int n,a[100000],i,j,k;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=1;i<=n;i++)
        {
            k=n/i;
            for(j=1;j<k;j++)
            {
                if(a[i*j]==0)
                    a[i*j]=1;
                else
                    a[i*j]=0;
            }
        }
        printf("%d\n",a[i*j]);
    }
    return 0;
}
输出答案全是0,怎么会事?

学无止境!
2009-11-08 13:13
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
#include<stdio.h>
int main()
{
    int n,i,j,k,a;
    while(scanf("%d",&n)!=EOF && 0<=n && n<=100000)
    {
        a=0;
        for(i=1;i<=n;i++)
        {
            if(n%i==0)
            {
                if(a==0)
                    a=1;
                else
                    a=0;
            }
            if(i==n)
                printf("%d\n",a);
        }
    }
    return 0;
}
我重新改成这样怎么样?

学无止境!
2009-11-08 13:57
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
谢了,大家!

学无止境!
2009-11-08 15:00
快速回复:求开光灯的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025899 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved