1 条题解

  • 0
    @ 2025-4-14 18:43:47

    C++ :

    #include<iostream>
    using namespace std;
    int a[5000005]={};
    bool huiwen(int x[],int len);
    bool jinzhi(int x[],int v,int j);
    int main() {
    	int i,j,k,l=0,n,s;
    	cin>>n>>s;
    	for(i=s+1;i<10000;i++){
    		k=0;
    		for(j=2;j<=10;j++){
    			if(jinzhi(a,i,j)) {
    				k++;
    			}
    			if(k>=2) {
    				break;
    			}
    		}
    		if(k>=2) {
    			cout<<i<<endl;
    			l++;
    		}
    		if(l==n) break;
    	}
    	return 0;
    }
    bool jinzhi(int x[],int v,int j){
    	int len=0;
    	while(v!=0){
    		x[len]=v%j;
            v=v/j;
            len++;
        }
        return huiwen(x,len);
    }
    bool huiwen(int x[],int len) {
    	int i;
    	for(i=0;i<len/2;i++){
    		if(x[i]!=x[len-1-i])
    			return false;
    	}
    	return true;
    }
    
    

    Pascal :

    var
       s:string;
       n,i,j,k,x:longint;
       f:array [0..300] of longint;
    procedure zh(x,n:longint);
    var i,j:longint;
    begin
       i:=0;
       while x<>0 do
       begin
          inc(i);
          f[i]:=x mod n;
          x:=x div n;
       end;
       f[0]:=i;
    end;
    function back:boolean;
    var i,j:longint;
    begin
       i:=1;j:=f[0];
       repeat
          if f[i]<>f[j] then exit(false);
          inc(i);
          dec(j);
       until i>f[0] div 2;
       back:=true;
    end;
    begin 
       readln(n,x);
       s:='0123456789ABCDEFGHIJK';
     
       i:=0;
       repeat
          inc(x);k:=0;
          for j:=2 to 10 do
          begin
             zh(x,j);
             if back then inc(k);
             if k>=2 then break;
          end;
          if k>=2 then
          begin
             writeln(x);
             inc(i);
          end;
       until i=n;
    end.
    
    • 1

    信息

    ID
    3255
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者