Educational Codeforces Round 27 B

题意:相当于给你6个数,问改变几次,可以使得前三个数字和==后三个数字和

思路:排序后,看是前面最小的数字可以加的多,还是后面那么最大的数字减的多

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 char s[10];
 5 int a[5],b[5];
 6 int x1,x2,x3;
 7 
 8 int main(){
 9     scanf("%s",s+1);
10     int s1=0,s2=0;
11     for(int i=1;i<=3;i++) {
12         a[i]=s[i]-'0';
13         s1+=a[i];
14     }
15     for(int i=4;i<=6;i++){
16         b[i-3]=s[i]-'0';
17         s2+=b[i-3];
18     }
19     if(s1==s2) {
20         printf("0
");return 0;
21     }
22     if(s1>s2) {
23         for(int i=1;i<=3;i++) swap(a[i],b[i]);
24     }
25     sort(a+1,a+4);
26     sort(b+1,b+4);
27     int l=1,r=3;
28     int x=0;
29     if(s1>s2) swap(s1,s2);
30     while(s1<s2&&l<=3&&r>=1){
31         x++;
32         int xx=9-a[l];
33         int yy=b[r];
34         if(xx>yy) {s1+=xx;l++;}
35         else {s2-=yy;r--;}
36 
37     }
38     cout<<x<<endl;
39 }
原文地址:https://www.cnblogs.com/hhxj/p/7419173.html