鱼C论坛

 找回密码
 立即注册
查看: 2534|回复: 3

关灯问题

[复制链接]
发表于 2015-8-29 16:58:57 | 显示全部楼层 |阅读模式
1鱼币
开关电灯
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
N盏灯排成一排,从1到N依次编号。有N个人也同样编号。
第一个人将灯全部熄灭;
第2个人将对应2和2的倍数的灯打开;
第3个人将对应着3和3的倍数的灯做反向操作(如果原来是开,则关掉它,否则就打开它);
以后的人和3做同样的操作,即第i个人将对应着i和i的倍数的灯做反向操作。
输入
灯的总数N, 1<=N<=1000
输出
在第N个人操作后,顺序输出还亮着灯的编号。
样例输入
8
样例输出
2 3 5 6 7 8

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-29 16:58:58 | 显示全部楼层
不知对否
#include <iostream>
using namespace std;
int main(void)
{
        /* 0:关 1:开  */


        /* 接收输入灯的数量 */
        int numberOfLights = 0;
        cin>>numberOfLights;

        /* 动态分配内存 */
        int *pLights = new int[numberOfLights]();



        /* 一级循环 */
        int iFirstLoop = 0;
        int iSeconLoop = 0;

        /* 设置2倍数的灯全亮 */
                for(iFirstLoop=1;iFirstLoop < numberOfLights;iFirstLoop+=2)
                {
                                 pLights[iFirstLoop] =1;
                }



        /* 从3倍数灯开始 */
        for(iFirstLoop=2;iFirstLoop<numberOfLights;iFirstLoop++)
        {
                /* 二级循环 */
                for(iSeconLoop=iFirstLoop;iSeconLoop < numberOfLights;iSeconLoop = iSeconLoop + (iFirstLoop+1))
                {
                                 pLights[iSeconLoop] = !pLights[iSeconLoop];
                }
        }




        /* 输出结果 */
        int iLoop = 0;
    for(iLoop=0;iLoop<numberOfLights;iLoop++)
        {
                if(1==pLights[iLoop])
                  cout<<iLoop+1<<endl;

        }
        /* 释放内存 */
        delete []pLights;


        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-29 19:43:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-13 16:09:30 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 09:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表