3 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n; long long a[110]; string binary(long long x,int y){ if (x==0)return "0"; string rep; while (x>0){ int g=x%y; if (g<10)rep+=(g+'0'); else rep+=((char)g-10+'A'); x/=y; } reverse(rep.begin(),rep.end()); return rep; } bool ishuiwen(string x){ int l=0,r=x.size()-1; while (l<r){ if (x[l]!=x[r])return false; l++;r--; } return true; } int main(){ cin>>n; for (int i=1;i<=n;i++){ cin>>a[i]; if (ishuiwen(binary(a[i],2))||ishuiwen(binary(a[i],16))) cout<<a[i]<<endl; } return 0; }
-
0
显示RE,请各位大佬改一下
#include <bits/stdc++.h> using namespace std; string bin(int x){ stack<char> stk;//因为栈后进先出,所以鄙人使用它 string s; while(x){stk.push(x%2+'0');x/=2;} while(!stk.empty()){s+=stk.top();stk.pop();}//余数倒置 return s; } string hex(int x){ stack<char> stk; string s; while(x){ switch(x%16){//判断压栈字符 case 10:stk.push('A');break; case 11:stk.push('B');break; case 12:stk.push('C');break; case 13:stk.push('D');break; case 14:stk.push('E');break; case 15:stk.push('F');break; default:stk.push('0'+x%16); } x/=16; } while(!stk.empty()){s+=stk.top();stk.pop();} return s; } bool huiwen(string s){ for(int i=0;i<(s.length()+1)/2;i++)if(s[i]!=s[s.length()-i-1])return false;//代码就是再这一行报错的 return true; } int main(){ int n,a[101]; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)if(huiwen(bin(a[i]))&&huiwen(hex(a[i])))cout<<a[i]<<endl; return 0; }
特请各位大佬赐复,发表妙见,鄙人拙著不易,恳请修改
-
0
HHH,鄙人又来搞事情了,今天我给大家讲一讲P383【基础】小丽找半个回文数?
思路
首先一定是要读入数据,接下来就是转化进制,这个实际上很简单,就是使用 bin()函数 和hex()函数的事儿。接下来关键的地方来了:如何判断它是回文数?我想在座的DDDD。不过我还是讲一下,就是比较一个数的对应位。所谓对应位,指的就是如果把一个数从个位开始编号为1,一直往下。则这个数总有这样两位数,满足其编号和为这个数的总位数+1。什么?你听不懂?那我就举个例子:对于数字2134,2的对应位是4,1的对应位是3,反之亦然。显然回文数以下的特点:
- 对于任意一个回文数,其任一位的对应位上的数和这一位上的数相等。 明确这一点后就好办了:逐个判断这个数每位的对应位是否与此位上的数相等(其实用不着逐位判断,最多判断n/2+1位即可) ,如果不相等直接抬走,肯定不是回文数。
代码
def check(u): k=len(u)-1 for i in range(k,-1,-1): if u[i] != u[k-i]:#不相等直接抬走 return False return True#都不出问题就是回文数 a=int(input()) b=list(map(int,input().split())) for i in b: hex_num=hex(i) hex_num=hex_num[2:] bin_num=bin(i) bin_num=bin_num[2:]#Python中的bin()函数、hex()函数都带前缀,必须去掉前缀 #顺带一提,此时hex_num和bin_num都是字符串类型 if check(hex_num) or check(bin_num): print(i)
Loading:27/100………^_^
- 1
信息
- ID
- 383
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 2
- 标签
- 递交数
- 36
- 已通过
- 25
- 上传者