2 条题解

  • 2
    @ 2026-1-29 15:40:26
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    const int INF=0x3f3f3f3f;
    int n,a[N];
    void Accepted( int x , int a[] , int & len )//Accepted()
    {
        len = 0;
        while ( x != 0 )
    	{
            a[++len] = x % 7;
            x /= 7;
        }
    }
    int WrongAnswer(int x,int y){
    	int a[7],b[7],c[7],len1,len2,len;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        Accepted(x,a,len1);
        Accepted(y,b,len2);
        len=max(len1,len2);
        for(int i=1;i<=len;i++){
            if(a[i]!=b[i])c[i]=1;
        }
        int n=0;
        for(int i=len;i>=1;i--){
            n=n*2+c[i];
        }
        return n;
    }
    int main()
    {
    	int end;
    	cin >> n;
    	for(int i=1;i<=n;i++)
    	{
    		cin >> a[i];
    	}
    	for(int i=1;i<n;i++){
            for(int j=i+1;j<=n;j++){
                int v=WrongAnswer(a[i],a[j]);
                if(abs(v-123)<abs(end-123)){
                    end=v;
                }
                if(end==v&&v<end){
                    end=v;
                }
            }
        }
        cout<<end;
    	return 0;
    }
    //老登布置的作业系列
    
    
    

    it so long

    • -1
      @ 2026-1-29 15:40:36
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e3+10;
      int a[N],n,best;
      void turn7(int x,int a[],int &len){
      	len=0;
      	while(x!=0){
      		a[++len]=x%7;
      		x/=7;
      	}
      }
      int getvalue(int x,int y){
      	int a[7],b[7],c[7],len1,len2,len;
      	memset(a,0,sizeof(a));
      	memset(b,0,sizeof(b));
      	memset(c,0,sizeof(c));
      	turn7(x,a,len1);
      	turn7(y,b,len2);
      	len=max(len1,len2);
      	for(int i=1;i<=len;i++){
      		if(a[i]!=b[i])
      		    c[i]=1;
      	}
      	int n=0;
      	for(int i=len;i>=1;i--){
      		n=n*2+c[i];
      	}
      	return n;
      }
      int main()
      {
      	cin>>n;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      	}
      	for(int i=1;i<n;i++){
      		for(int j=i+1;j<=n;j++){
      		    int v=getvalue(a[i],a[j]);
      		    if(abs(v-123)<abs(best-123)){
      			    best=v;
      		    }
      		    if(best==v&&v<best){
      			    best=v;
      		    }
      	    }
          }
      	cout<<best;
      	return 0;
      }
      
      
      • 1

      信息

      ID
      2513
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      114
      已通过
      29
      上传者