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 }