ZZULIOJ-2316,开灯问题(模拟)

简介: ZZULIOJ-2316,开灯问题(模拟)

题目描述:


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


输入:


输 入两个正整数n和k(k≤n≤100000),用空格隔开。


输出:


输出开着的灯的数量。  


样例输入:


5 3


样例输出:


2


程序代码:


#include<bits/stdc++.h>//好久不写万能头都快忘了!!! 
using namespace std;
#define MAXN 100001
int a[MAXN];
int main()
{
  int n,k;
  scanf("%d %d",&n,&k);
  memset(a,0,sizeof(a));//灯是灭的,初始为0 
  for(int i=1;i<=k;i++)
  {
    for(int j=i;j<=n;j+=i)//控制j的增量,省时间 
    {//从第i个人开始,依次增加i,确保是编号的倍数 
      a[j]=!a[j];//改变灯的状态,取反 
    }
  }
  int sum=0;
  for(int i=1;i<=n;i++)
    if(a[i])//统计 
      sum++;
  printf("%d\n",sum);
  return 0;
}



相关文章
|
Python
ZZULIOJ-1029,三角形判定(Python)
ZZULIOJ-1029,三角形判定(Python)
|
Python
ZZULIOJ-1030,判断直角三角形(Python)
ZZULIOJ-1030,判断直角三角形(Python)
|
Python
ZZULIOJ-1057,素数判定(Python)
ZZULIOJ-1057,素数判定(Python)
|
Python
ZZULIOJ-1070,小汽车的位置(Python)
ZZULIOJ-1070,小汽车的位置(Python)
|
Java C++
ZZULIOJ-1100: 求组合数(函数专题)(Java)
ZZULIOJ-1100: 求组合数(函数专题)(Java)
|
Java C++
ZZULIOJ-1093: 验证哥德巴赫猜想(函数专题)(Java)
ZZULIOJ-1093: 验证哥德巴赫猜想(函数专题)(Java)
|
Python
ZZULIOJ-1048,阶乘表(Python)
ZZULIOJ-1048,阶乘表(Python)
|
Java Serverless C++
ZZULIOJ-1102: 火车票退票费计算(函数专题)(Java)
ZZULIOJ-1102: 火车票退票费计算(函数专题)(Java)
ZZULIOJ-1057,素数判定(Java)
ZZULIOJ-1057,素数判定(Java)