1 条题解

  • 0
    @ 2025-1-21 21:53:27

    不多说了,真的很简单 思路大致是枚举,逐位取余然后判断 直接上代码

    #include <bits/stdc++.h>
    using namespace std;
    int n,s,a[100001],num=0;
    bool broke(int x,int k)
    {
    	int len=1;
    	while (x>0){
    		a[len]=x%k;
    		x/=k;
    		len++;
    	}
    	len--;
    	for (int i=1;i<=len/2;i++){
    		if (a[i]!=a[len-i+1]){
    			return 0;
    		}
    	}
    	return 1;
    }
    int main()
    {
    	cin>>n>>s;
    	while (num!=n){
    		s++;
    		int cnt=0;
    		for (int i=2;i<=10;i++){
    			if (broke(s,i)){
    				cnt++;
    			}
    			if (cnt==2){
    				break;
    			}
    		}
    		if (cnt==2){
    			cout<<s<<endl;
    			num++;
    		}
    	}
    }
    

    信息

    ID
    11
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    11
    已通过
    6
    上传者