灯光开关切换(c++)

题目描述

Farmer John 为了保持奶牛拥有一个聪明的脑袋(很令人怀疑,囧),所以让它们玩脑力开发玩具。其中一个较大型的玩具就是在牛棚中的电灯。农场中总共有 N ( 2 <= N <= 500 ) 个牛棚,每个牛棚上方都有一个编号为 1 到 N 的彩色灯泡。

傍晚时分,所有的灯泡都是关闭着的。奶牛们通过 N 个按钮来控制着灯泡的开与关。按下编号为 i 的按钮会使编号为 i 的灯泡的状态改变,比如从开到关,从关到开。

奶牛们阅读并执行一个由 M ( 1 <= M <= 2000 ) 个操作符和它的参数所组成的操作清单。每个操作符由一个整数表示 ( 0 <= 操作符 <= 1 )。

编号为 0 的操作符包括 2 个参数,Si​ 和 Ei​ ( 1 <= Si​ <= Ei​ <= N ),要求奶牛依次按下了从第 Si​ 号开关到第 Ei​ 号的开关。

编号为 1 的操作符仍然有2个参数,Si​ 和 Ei​ 。这条命令要求奶牛数出在第 Si​ 号和第 Ei​ 号灯泡之中,有多少灯泡是亮着的。

请你帮助 Farmer John 确定奶牛是否按下了正确的按钮和数出正确的答案。

输入格式

第一行:2 个由空格分开的整数 N 和 M 。

第二行到第 M+1 行:每一行有 3 个由空格分开的整数:操作符(0或1),Si​,Ei​

输出格式

每次出现 1 号操作符就输出一次正确的当前灯光状态为开的灯泡数量。

样例

输入数据 1

4 5
0 1 2
0 2 4
1 2 3
0 2 4
1 1 4

Copy

输出数据 1

1
2

Copy

样例解释

指令

灯泡状态

O表示关,*表示开

指令的操作解释输出信息
初始状态O O O O
0 1 2* * O O切换编号为 1 和 2 的灯泡的状态
0 2 4* O * *切换编号为 2,3,4 的灯泡的状态
1 2 3* O * *输出从编号 2 到编号 3 之间灯泡状态为开的灯泡数量1
0 2 4* * O O切换编号为 2,3,4 的灯泡的状态
1 1 4* * O O输出从编号 1 到编号 4 之间灯光状态为开的灯泡数量2
#include<bits/stdc++.h>
using namespace std;
int n,t,a[1005];
int main(){
    cin>>n>>t;
	while(t--){
		int k,x,y;
		cin>>k>>x>>y;
		if(k==1){
			int s=0;
			for(int i=x;i<=y;i++)s+=a[i];
			cout<<s<<"\n";
		}
		else{
			for(int i=x;i<=y;i++){
				if(a[i]==0)a[i]=1;
				else a[i]=0;
			}
		}
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值