Description

Polycarp has guessed three positive integers \(a\), \(b\) and \(c\). He keeps these numbers in secret, but he writes down four numbers on a board in arbitrary order — their pairwise sums (three numbers) and sum of all three numbers (one number). So, there are four numbers on a board in random order: \(a+b\), \(a+c\), \(b+c\) and \(a+b+c\).

You have to guess three numbers \(a\), \(b\) and \(c\) using given numbers. Print three guessed integers in any order.

Pay attention that some given numbers \(a\), \(b\) and \(c\) can be equal (it is also possible that \(a=b=c\)).

Input

The only line of the input contains four positive integers \(x_{1}\),\(x_{2}\),\(x_{3}\),\(x_{4}\)(\(2\)≤\(x_{i}\)≤\(10^{9}\)) — numbers written on a board in random order. It is guaranteed that the answer exists for the given number \(x_{1}\),\(x_{2}\),\(x_{3}\),\(x_{4}\).

Output

Print such positive integers \(a\), \(b\) and \(c\) that four numbers written on a board are values \(a+b\), \(a+c\), \(b+c\) and \(a+b+c\) written in some order. Print \(a\), \(b\) and \(c\) in any order. If there are several answers, you can print any. It is guaranteed that the answer exists.

Examples

Input1:

3 6 5 4

Output1:

2 1 3

Input2:

40 40 40 60

Output2:

20 20 20

Input3:

201 101 101 200

Output3:

1 100 100

Solution

简化版题意:

有三个正整数\(a\), \(b\), \(c\), 现在给定\(x_{1}\) \(=\) \(a + b\), \(x_{2}\) \(=\) \(a +c\), \(x_{3}\) \(=\) \(b + c\), \(x_{4}\) \(=\) \(a + b + c\)。 请求出\(a\), \(b\), \(c\)分别是多少。

这是一道数论题。

我们先整理一下题面告诉我们的信息:

  1. \(a\)、\(b\)、\(c\)是三个正整数;

  2. 我们会输入4个乱序的数字:\(x1\)、\(x2\)、\(x3\)、\(x4\);

  3. \(x_{1}\) = \(a\) + \(b\) , \(x_{2}\) = \(a\) + \(c\) , \(x_{3}\) = \(b\) + \(c\) , \(x_{4}\) = \(a\) + \(b\) + \(c\)。

∵\(a\)、\(b\)、\(c\)均>\(0\).

∴\(x_{4}\)是这四个数中最大的数。

至于如何求出\(a\)、\(b\)、\(c\),则可以:

用\(x_{4} - x_{1}\)得到\(c\),用\(x_{4} - x_{2}\)得到\(b\),用\(x_{4} - x_{3}\)得到\(a\),最后按顺序输出这三个数即可。

注意:我们需要开一个数组\(x\)[]来存储\(x_{1}\)、\(x_{2}\)、\(x_{3}\)、\(x_{4}\),因为这样便于我们排序(可以直接调用\(c++\)库函数\(sort\),但要开头文件\(algorithm\)),而且可以更好地帮助我们寻找到\(a\)、\(b\)、\(c\)。

Code

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>//头文件准备 using namespace std;//使用标准名字空间 inline int gi()//快速读入,不解释
{
int f = 1, x = 0;
char c = getchar();
while (c < '0' || c > '9')
{
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
{
x = x * 10 + c - '0';
c = getchar();
}
return f * x;
} int a, b, c, x[5];//a、b、c和x数组的意义同分析 inline void init()//分别输入这四个数
{
x[1] = gi(), x[2] = gi(), x[3] = gi(), x[4] = gi();
} inline void solve()//将x数组从小到大排序
{
sort(x + 1, x + 1 + 4);//1和4是指从x[1]到x[4]从小到大排序
} inline void output()//输出的自函数
{
printf("%d %d %d\n", x[4] - x[1], x[4] - x[2], x[4] - x[3]);//分别输出a、b、c。
} int main()//进入干净整洁的主函数
{
init();//输入
solve();//排序解决问题
output();//输出
return 0;//养成return 0的好习惯
}

题解【CodeForces1154A】Restoring Three Numbers的更多相关文章

  1. CF1154A Restoring Three Numbers 题解

    Content 已知有三个正整数 \(a,b,c\),现在给出 \(a+b,a+c,b+c,a+b+c\)(不保证有序)的值,试求出 \(a,b,c\). 数据范围:\(2\leqslant a+b, ...

  2. leetcode题解2. Add Two Numbers

    题目: You are given two non-empty linked lists representing two non-negative integers. The digits are ...

  3. 《LeetBook》LeetCode题解(2):Add Two Numbers [M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  4. LeetCode题解之Find All Numbers Disappeared in an Array

    1.题目描述 2.问题分析 使的 A[i] = i+1 ,最后检查不满足这个条件的i+1 .即为缺失的值. 3.代码 vector<int> findDisappearedNumbers( ...

  5. LeetCode 题解之Add Two Numbers II

    1.题目描述 2.分析 首先将链表翻转,然后做加法. 最后将结果链表翻转. 3.代码 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { Lis ...

  6. LeetCode题解之Add two numbers

    1.题目描述 2.题目描述 题目思路可以参考合并单链表的思路,定义一个全局 进位标志,如果两个数值相加得到需要进位,则将进位标志置为1 . 3.代码 ListNode* addTwoNumbers(L ...

  7. leetCode题解之Self Dividing Numbers

    1.题目描述 2.题目分析 简单题目,只要挨个判断该数是不是满足条件即可. 3.代码 vector<int> selfDividingNumbers(int left, int right ...

  8. LeetCode题解 #2 Add Two Numbers

    题目大意:使用链表表示的两个整数,计算出其和,以同样的形式返回. Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 ...

  9. 题解 CF171A 【Mysterious numbers - 1】

    又是愚人节题目qwq-- 说一下题意吧: 把第1个数翻转后加第二个数 具体思路: 1.定义变量,进行输入 int a,b; cin>>a>>b; 2.定义一个变量c,作为存储第 ...

随机推荐

  1. tmp = 2/4;竟然没有发现的

    我还纠结着单目运算符和双目运算符和乘除的一些优先级什么事情. #include "common.h" #include <stdio.h> #include <s ...

  2. Python instagram 爬虫项目

    直接介绍一下具体的步骤以及注意点: instagram 爬虫注意点 instagram 的首页数据是 服务端渲染的,所以首页出现的 11 或 12 条数据是以 html 中的一个 json 结构存在的 ...

  3. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 Banana

    签到题 50的规模,随便搞搞都能过,用stl的string的搜索直接做了 #include <bits/stdc++.h> using namespace std; typedef lon ...

  4. Java_Day4(下)

    Java learning_Day4(下) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...

  5. MySQL的操作数据库SQL语法

    MySQL的操作数据库SQL语法 顺序:操作数据库 > 操作数据库中的表 > 操作数据库中的表的数据 MySQL不区分大小写字母 1. 操作数据库 1.创建数据库 2.删除数据库 3.使用 ...

  6. Win10安装4 —— 通过BIOS进入PE

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12369367.html 一:"BIOS"与"PE& ...

  7. Spring IoC详解

    Spring IoC详解 1. 控制反转 控制反转是一种通过描述(XML或者注解)并通过第三方去产生或获取特定对象的方式.在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Depend ...

  8. Nginx 配置Websocket

    Nginx反向代理配置websocket nginx.org 官网推荐如下的配置,也可以直接看官网:http://nginx.org/en/docs/http/websocket.html http ...

  9. 申请一个美国paypal账户

    近期为了做PayPal支付,进口demo已经写好,就差一个美国PayPal账户进行支付测试,几经折腾,终于申请下来,附上参考链接:   paypal官网: https://www.paypal.com ...

  10. pom中<scope></scope>一些理解

    compile:默认值,表示当前依赖包,要参与当前项目的编译,后续测试,运行时,打包provided:代表在编译和测试的时候用,运行,打包的时候不会打包进去test:表示当前依赖包只参与测试时的工作: ...