需求一个有c语言写的程序

来源:百度知道 编辑:UC知道 时间:2024/09/25 03:20:22
Description 在一条路的一边共有N(2<=N<=10000)盏灯,分别编号为1,2,3....N,每盏灯有开、关两种状态。一天一个酒鬼路过,由于喝醉酒,所以他想玩一个简单的游戏。他想要是每次都从路的一头(A端)走到另一头(B端),总共走N-1次;对于第i(i=1,2,3...N-1)次行走,对于编号为(i+1)的整数倍的灯来说,如果是开着的那么他就将其关闭,如果是关闭的那么他就将其打开。但酒鬼心里很清楚这条路太长,有很多灯,所以他觉得他这样玩下来会很累,但他又很想知道这样玩下去最后的结果是什么。不过酒鬼很幸运,他遇到了你,他想你帮他完成这个简单的游戏。假设在你开始游戏之前所有的灯都是关闭的。
Input
第一行输入一个正整数T,表示测试数据的组数;接下来的T行每行输入一个正整数N,表示路上的灯的个数。

Output
对于每一组测试数据对应一行输出,如果最后有奇数个开关开着,则输出“YES”,否则输出“NO”。

Sample Input
2
5
55

Sample Output
YES
NO

m,m,

DEV C++下运行成功

#include<stdio.h>
#include<stdlib.h>

void text(int n)
{
int v[n],i=1,j,open=0,close=0;
for(j=0;j<n;j++)
v[j]=0;

while(i<n)
{
for(j=0;j<n;j++)
{
if((j+1)%(i+1)==0)
{
switch(v[j])
{
case 0:v[j]=1;break;
case 1:v[j]=0;break;
}
}
}
i++;
}

j=0;
while(j<n)
{
switch(v[j])
{
case 0:close++;break;
case 1:open++;break;
}
j++;
}

if(open%2!=0)printf("YES ");
else printf("NO ");
printf("%d盏灯开着,%d盏灯关着。",open,close);

}

int main()
{
int T,N[1024],j;
printf("请输入测试数据的组数:");
scanf("