传送门

 


 

A. Restoring Three Numbers

  题意:

    给出 a+b,a+c,b+c,a+b+c 三个数,求a,b,c;

  思路:

    不妨设 a < b < c,那么 a+b < a+c < b+c < a+b+c;

    假设 a+b = x , a+c = y , b+c = z , a+b+c = k;

    那么 a = x-b , c = z-b , 带入 a+b+c = k中得

    (x-b)+b+(z-b) = k;

    x+z-b=k ⇔b=x+z-k

    a=x-b;

    c=y-b;

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int a[5];
 5 int main()
 6 {
 7 //    freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
 8     for(int i=1;i <= 4;++i)
 9         scanf("%d",a+i);
10     sort(a+1,a+5);
11     int aa=a[4]-a[3];
12     int b=a[1]+a[3]-a[4];
13     int c=a[4]-a[1];
14     printf("%d %d %d\n",aa,b,c);
15 }
View Code

相关文章: