2 条题解
-
1
#include<iostream> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; int n; cin>>t; while(t--) { int j=0; cin>>n; //特判0 if(n==0) { cout<<"YES"<<'\n'; continue; } char c[96]={'0'}; //存储二进制 while(n) { int i=n%2; c[j++]='0'+i; n/=2; } int cnt=0; int fa=0; //找出c中前导0的个数 //如8 1000,存储在c中为0001 //我们要在c的后面加3个0 for(int k=0;k<j;k++) { if(c[k]=='0'&&fa==0) { cnt++; } if(c[k]!='0') { fa=1; } } //加0 while(cnt--) { c[j++]='0'; } //一共奇数位的话中间必须为0 if(j%2==1) { if(c[j/2]=='1') { cout<<"NO"<<'\n'; continue; } } //判断是否回文 fa=1; for(int i=0;i<=j/2;i++) { if(c[i]!=c[j-1-i]) { fa=0; break; } } if(fa) cout<<"YES"<<'\n'; else cout<<"NO"<<'\n'; } return 0; }
信息
- ID
- 1197
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 24
- 已通过
- 4
- 上传者