2657 - 数字帝

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

吴壕最近喜欢上了研究数字的问题,虽然数字帝是雯神,但是吴壕表示不服。于是吴壕想出了一个问题来难雯神了,给你一个数n(n<10^7),要你判断他是否有这样的一个序列,这个序列中1-n所有数都有两个,也就是说其中有两个1,两个2。。。。两个n。并且 两个1之间要有一个数,两个2之间要有两个数。 比如,如果n=3 那么这个序列是312132  雯神去问学霸,学霸表示不要问我这种弱智的问题,这样雯神犯难了。请帮帮雯神。

题目输入

多组输入,每组数据一个数n

题目输出

是否存在这样的序列,如果存在输出Y  否则输出N


输入/输出样例

输入格式

3
4
2

输出格式

Y
Y
N

C语言解答

#include <stdio.h>
#include<math.h>
int main()
{
   int m,n,i,j,k;
   while(scanf("%d",&n)!=EOF)
  { m=0;
    k=3;
   if(n<=2)
   printf("N\n");
   else
   {
     for(i=0;i<n;i++)
     {
       m+=k;
       k++;
     }
     if((m-2*n)%2==0)
     printf("Y\n");
     else
     printf("N\n");
   }
  }
}

C++解答

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
            return 0;
        if(n%4==0||(3*n-1)%4==0)
            printf("Y\n");
        else
            printf("N\n");
    }


    return 0;
}