• 0081-开关灯


    开关灯
    难度级别:A; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
    试题描述

      礼堂有n盏灯(n<=5000),从1到n按顺序对灯进行编号,初始时全部处于开启状态;有m个人(m<=1000)也从1到m依次编号。

    第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做了相反处理(即打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将自己编号倍数的灯做相反处理。

    经过m个人操作最后有多少灯是开着的?输出开着灯的个数。

    输入
    一行两个整数n和m
    输出
    输出开着的灯的数量。
    输入示例
    4 3
    输出示例
    3
    #include<bits/stdc++.h>//万能头文件
    using namespace std;
    bool a[5001];//布尔数组,全局数组默认全部置0
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		for(int j=1;i*j<=n;j++) a[i*j]^=1;//抑或运算,0^1=1,1^1=0(0表示开灯,1表示关灯)
    	}
    	int s=0;
    	for(int i=1;i<=n;i++) s+=a[i]^1;//累加结果
    	cout<<s;
    	return 0;
    }
    

      精通三种语言的老师能看得懂吗?

  • 相关阅读:
    Jzoj5542 董先生的钦点
    Jzoj5542 董先生的钦点
    (各种)FFT模板
    (各种)FFT模板
    Jzoj3528 图书馆
    Jzoj3528 图书馆
    Jzoj5317 Func
    Jzoj5317 Func
    Jzoj3591 数据
    【UVa11021】Tribles
  • 原文地址:https://www.cnblogs.com/dong-ji-yuan/p/10096144.html
Copyright © 2020-2023  润新知