3 条题解

  • 0
    @ 2024-5-6 21:56:36
    #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
      @ 2023-10-28 20:51:19

      显示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
        @ 2023-3-9 21:44:34

        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………^_^

        • @ 2023-10-28 20:55:42

          请问有C++般的吗,我看不懂Python

      • 1

      【基础】小丽找半个回文数?

      信息

      ID
      383
      时间
      1000ms
      内存
      16MiB
      难度
      2
      标签
      递交数
      36
      已通过
      25
      上传者