問題 F: 開燈問題(第二講)

JYC的進階之旅發表於2020-12-09

題目描述
有n盞燈,編號為1~n,第1個人把所有燈開啟,第2個人按下所有編號為2的倍數的開關(這些燈將被關掉),第3個人按下所有編號為3的倍數的開關(其中關掉的燈被開啟,開著燈將被關閉),依此類推。一共有k個人,問最後有哪些燈開著?

輸入
n和k,輸出開著的燈編號。k≤n≤1000。

輸出
輸出開著的燈編號

樣例輸入

7 3

樣例輸出

1 5 6 7
#include<stdio.h>
#include<string.h>
int a[1000];

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])
		printf("%d ",i);
	}
	
	
	return 0;
 } 

相關文章