第三章 选做题 开灯关灯

#include "stdafx.h"
#include <iostream>
#include<string.h>
using namespace std;
//题目描述  有n盏灯,编号依次为1, 2, 3, ..., n;初始化时,所有灯都是关闭状态;
//小明第一次将编号为1, 2, 3, ..., 共n盏灯都打开了;第二次将编号为2, 4, 6, ...., 共n / 2盏灯都关闭了;
//第三次将编号为3, 6, 9, ..., 共n / 3盏灯进行操作,若是之前关闭状态则打开,若是打开状态,则关闭;
//第四次将4, 8, 12, ...., 共n / 4盏灯进行操作。这样操作了n次,问最后亮了几盏灯。
//输入描述   第一行输入整数T,表示有T组测试用例;1 <= T <= 100接下来T行,每行有一个整数n,表示当前测试用例有n盏灯;1 <= n <= 1000
//输出描述   输出n行,每次测试用例最后亮灯的数目。样例输入2 1 5 样例输出 1 2

#define maxn 1010
int a[maxn];
int b[maxn];
int main() {
    int T, n, k=0;
    memset(a, 0, size(a));
    cin >> T;
    for (int i = 1; i <= T; i++) {
        cin >> b[i];
    }
    for (int i = 1; i <= T; i++) {
        n = b[i];
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                if (j%i == 0)  a[j] = !a[j];

        for (int i = 1; i <= n; i++) {
            if (a[i]) k++;
        }
        cout << k << endl;
    }

        


    return 0;
}

 

 


//int main()
//{
//    int n, k, first = 1;
//    memset(a, 0, sizeof(a));
//    
//    cin >> n >> k;
//
//    for (int i = 1; i <= k; i++) {
//        for (int j = 1; j <= n; j++) {
//            if (j%i == 0)a[j] = !a[j];
//        }
//    }
//
//    for (int i = 1; i <= n; i++)
//        if (a[i]) {
//            if (first) first = 0;
//            //设置first,可以表示当前要输出的变量是否为第一个,第一个没有空格
//            else cout << ends;
//            cout << i;
//        }
//    cout << endl;
//
//    return 0;
//}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值