【SWUSTOJ】OJ解析(学习日记(自用
2868: 你头像好乖啊
规律:
n为奇数 A就一定会赢。
n为偶数时,
n为2时,A一定会输。
n的因子只有偶数因子时,会平局;
剩下的就是 含有奇数因子的n,会赢;
//学长的代码
#include<iostream>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int T,len;
ll n,arr[N];
int main(){
ios::sync_with_stdio(false);
for(ll x=2;x<=1e10;x*=2)
arr[++len]=x;
while(cin>>T){
while(T--){
cin>>n;
if(n==2){
cout<<"NO"<<endl;
}else if(n%2){
cout<<"YES"<<endl;
}else{
int flag=0;
for(int i=1;i<=len;i++){
if(arr[i]==n){
flag=1;
break;
}
}
if(flag) cout<<"PING"<<endl;
else cout<<"YES"<<endl;
}
}
}
return 0;
}
我的代码比较笨,嘤嘤嘤:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int T;
long long n,a[40];
a[0]=1;
for(int i=1;i<=39;i++)
a[i]=2*a[i-1];
cin>>T;
while(T--){
cin>>n;
int f=0;
if(n==2)
cout<<"NO\n";
else if(n%2==1)
cout<<"YES\n";
else
{
for(int i=1;i<39;i++)
{
if(n==a[i])
f++;
}
if(f==1)
cout<<"PING\n";
else
cout<<"YES\n";
}
}
return 0;
}