刘汝佳p39,3-2(开灯问题)算法竞赛入门经典第二版

来源:互联网 发布:sql group by多个字段 编辑:程序博客网 时间:2024/05/24 07:07

有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?
输入:n和k,输出开着的灯编号。k≤n≤1000。

样例输入:7 3

样例输出:1 5 6 7
(题目描述拷贝自http://blog.csdn.net/oceaniwater/article/details/40709609)

#include<stdio.h>int main(){    int n,k,ni,ki,nii;    //n=7;k=3;    scanf("%d%d",&n,&k);    for(ni=1;ni<=n;ni++)//灯数    {        nii=ni;        for(ki=1;ki<=k;ki++)//每灯人数        {            //printf("%%%d ",nii%ki);            if(nii%ki==0)//当前灯是否为当前人的倍数            {                ni*=(-1);//负数为开,正数为灭            }        //printf("!%d\n",ni);        }        if(ni<0)        {            printf("%d ",ni*=-1);        }    }    return 0;}
阅读全文
0 0
原创粉丝点击