2 条题解

  • 2
    @ 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;
    }
    
    
    • 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

      信息

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