845B

845B - Luba And The Ticket

自己写的快蠢哭了,一开始少考虑了几种情况还被hack。。。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=210;
 4 char s[8];
 5 int a[9],b[9];
 6 int n;
 7 
 8 int main(){
 9    while(scanf("%s",s)!=EOF){
10         for(int i=0;i<6;i++) {a[i]=-(int)(s[i]-'0');b[i]=9+a[i];}
11         sort(a,a+3);
12         sort(b,b+3);
13         int a1=a[0];
14         int b1=b[2];
15         int a2=a[1]+a[0];
16         int b2=b[1]+b[2];
17         int a3=a[0]+a[1]+a[2];
18         int b3=b[0]+b[1]+b[2];
19         sort(a+3,a+6);
20         sort(b+3,b+6);
21         int c1=a[3];
22         int d1=b[5];
23         int c2=a[3]+a[4];
24         int d2=b[4]+b[5];
25         int c3=a[3]+a[4]+a[5];
26         int d3=b[3]+b[4]+b[5];
27 
28         int p=-(a[0]+a[1]+a[2]);
29         int q=-(a[3]+a[4]+a[5]);
30         int r=q-p;
31         if(r==0){
32             puts("0");
33             continue;
34         }else if(r>0){
35             if(b1>=r||-c1>=r){
36                 puts("1");
37                 continue;
38             }else if(b2>=r||-c2>=r||(b1-c1)>=r){
39                 puts("2");
40                 continue;
41             }else if(b3>=r||-c3>=r||(b2-c1)>=r||(b1-c2)>=r){
42                 puts("3");
43                 continue;
44             }
45         }else if(r<0){
46             if(a1<=r||d1>=-r){
47                 puts("1");
48                 continue;
49             }else if(a2<=r||d2>=-r||(-a1+d1)>=-r){
50                 puts("2");
51                 continue;
52             }else if(a3<=r||d3>=-r||(-a2+d1)>=r||(-a1+d2)>=r){
53                 puts("3");
54                 continue;
55             }
56         }
57    }
58    return 0;
59 }
=_=||

下面这个是看的题解

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int bit1[7],bit2[7];
 4 
 5 int main(){
 6     int x;
 7     while(scanf("%d",&x)!=EOF){
 8         int pos=0;
 9         memset(bit1,0,sizeof(bit1));
10         while(x){
11             bit1[pos++]=x%10;
12             x/=10;
13         }
14         int ans=1e9;
15         for(int i=0;i<1000000;i++){
16             int pos=0;
17             int temp=i;
18             memset(bit2,0,sizeof(bit2));
19             while(temp){
20                 bit2[pos++]=temp%10;
21                 temp/=10;
22             }
23             if(bit2[0]+bit2[1]+bit2[2]==bit2[3]+bit2[4]+bit2[5]){
24                 ans=min(ans,
25                         (bit2[0]!=bit1[0])+(bit2[1]!=bit1[1])+
26                         (bit2[2]!=bit1[2])+(bit2[3]!=bit1[3])+
27                         (bit2[4]!=bit1[4])+(bit2[5]!=bit1[5]));
28             }
29         }
30         printf("%d
",ans);
31     }
32 }
View Code
原文地址:https://www.cnblogs.com/yijiull/p/7423809.html