思路:判断N和G所变换的数据分是被是奇数和偶数,从何通过逆向思维来判断;

#include <bits/stdc++.h>
#define ll long long
#define MAX 100005
using namespace std; 
int main()
{
    ll n,a[MAX],flag=0,i;
    cin>>n;
    while(n!=0)
    {
        if(n%2==0)
        {
            n=(n-2)/2;
            a[flag++]=2;
        }
        else
        {
            n=(n-1)/2;
            a[flag++]=1;
        }
    }
    for(i=flag-1 ; i>=0 ; i--)
    {
        if(a[i]==2)
            cout<<"G";
        else
            cout<<"N";
    }
    cout<<endl;
    return 0;
}