开灯难题

例:开灯问题

图片 1

C语言问题,C语言问题,C语言问题 80C
编写一个程序,要求:输入N个学生的学号和成绩,并保存在stu.txt文本文件中,对学生成绩进行排序并把排序后的结果输出到score.txt文件中,同时在屏幕上输出高于平均成绩的学生的学号和成绩。

不负春光❤️

描述

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

/****************************************************************************************
   题目链接:
               http://acm.nyist.net/JudgeOnline/problem.php?pid=77
   思    路:
               首先是输入2个数据,然后定义一个数组,介于灯只有2种状态,
               所以就定义成bool类型,然后初始化为0,代表灯起初全部是关闭状态。
               接着是2个循环,外面的循环代表从编号为1的人开始,直到结束。
               里面的循环代表从编号为1的灯进行操作,把符合要求的灯的状态改变为和原来相反的状态即可。
               最后判断哪些灯是开的,将它的编号输出。
               由于最后的输出中,除了第一个输出的前面没有空格,其它的结果前面都有空格,
               所以就把第一个就单独考虑。
****************************************************************************************/
#include 
#include 
#include 
using namespace std;
int main(void)
{
    int n,k;
  while(cin>>n>>k)
  {
    bool *lamp = (bool *)malloc((n+2)*sizeof(bool));
    memset(lamp,0,(n+2)*sizeof(lamp));
    for(int i=1; i<=k; i++)//人数遍历
           for(int j=1; j<=n; j++)//灯数遍历
              if(j % i == 0)
              * (lamp+j) = !*(lamp+j);
    cout<<1;
    for(int j=2; j<=n; j++)
       if(*(lamp+j) == 1)
         cout<<

图片 2

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

样例输入:7 3

题目链接: 思 路:
首先是输入…

扫码观看

输入

样例输出:1 5 6 7

图片 3

输入一组数据:n和k

解:开一个足够大的数组,模拟整个过程即可~

扫扫更健康

输出

Code:

每个练习温和的进行到能感受到舒适即可,配合着练习更更好。

输出开着的灯编号

#include
#include

#define MAX 1000+10
int a[MAX];

int main()
{
    int i, j, n, k;
    memset(a, 0, sizeof(a));
    scanf("%d%d", &n, &k);
    for(i = 1; i <= k; i++)
        for(j = 1; j <= n; j++)
            if(j%i == 0) a[j] = !a[j];
    for(i = 1; i <= n; i++) if(a[i])
    {
        if(i == n) printf("%d\n", i);
        else printf("%d ", i);
    }
    return 0;
}

肩颈活力(一)

样例输入

有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编…

肩背活力(二)

7 3

感谢美模CC❤️

样例输出

1 5 6 7

 1 #include <stdio.h> 
 2 #include <string.h>
 3 
 4 int main(){
 5     int n;
 6     int k;
 7     int flag[1001];
 8     int i;
 9     int j;
10     
11     scanf("%d%d",&n,&k);
12     memset(flag,0,sizeof(int)*1001);
13     
14     for(i=1;i<=k;i++){
15         for(j=1;j<=n;j++){
16             if(j%i==0){
17                 if(flag[j-1]==0)
18                     flag[j-1]=1;
19                     
20                 else
21                     flag[j-1]=0;
22             }
23         }
24     }
25     
26     for(i=0;i<n;i++){
27         if(flag[i]==1){
28             printf("%d",i+1);
29             flag[i]=0;
30             break;
31         }
32     }
33     
34     for(i=0;i<n;i++){
35         if(flag[i]==1)
36             printf(" %d",i+1);
37     }
38     
39     printf("\n");
40     
41     return 0;
42 }

 

相关文章