游客 Signup | Login
中文 | En

2464 - 【数组】开门问题(例题)

        例5.3     宾馆里有一百个房间,从1-100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)

 

Input

无输入。

 

Output

从小到大输出开着门的房间编号,中间用一个空格分隔,行尾不能有空格。

 

Examples

Input

no input needed

Output

1 4 9 16 25 36 49 64 81 100

Solution C

#include<stdio.h>
#include<string.h>
int a[1000];
int main()
{
	int i,j,l=0;
	
	memset(a,0,sizeof(a));
	for(j=1;j<=100;j++)
	{
	
	for(i=1;i<=100;i++)	

	if(i%j==0)
	{
	a[i]=!a[i];
	}}
	for(i=1;i<=100;i++)
	{
	if(a[i]!=0)
	{
		l++;
		if(l==1)printf("%d",i);
		if(l>1)printf(" %d",i);
	}}
	return 0;
}

Solution C++

#include<cstdio>
#include<cstring>
#include<cstdio>
#define MAXN 100+10
int a[MAXN];
int main()
{
	int k,n,first;
	first=1;
	memset(a,0,sizeof(a));
	for (int i=1;i<101;++i)
		for (int j=1;j<=100;++j)
			if (j%i==0) a[j]=!a[j];
	for (int i=1;i<=100;++i)
		if (a[i])
		{
			if(first) first=0; 
				else printf(" ");
			printf("%d",i);  
		}
	printf("\n");
	return 0;	
}

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题