思路:判断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; }