上海计算机学会2026年3月月赛C++丙组T1 和差还原

张开发
2026/5/24 16:03:45 15 分钟阅读
上海计算机学会2026年3月月赛C++丙组T1 和差还原
和差还原题目描述给定两个整数 S 及 TS 表示两个整数的和而 T 表示这两个整数的差请输出这两个整数。输入格式两个整数表示 S 及 T。输出格式输出两个整数 a 与 b要求abSabSabSa−bTa-bTa−bT中间用一个空格分开。数据范围−100≤S,T≤100-100 \le S, T \le 100−100≤S,T≤100保证一定有解。样例样例 1输入11 45输出28 -17和差还原 题解我的解题思路我看到这道题是已知两数之和 S、两数之差 T求这两个数的经典数学问题我直接用和差公式就能一步算出答案完全不用复杂逻辑。我推导的公式设两个数为 x、yx y Sx - y T两式相加2x ST →x (ST)/2两式相减2y S-T →y (S-T)/2我直接把这个数学公式写成代码就能完美解决问题。我的代码逐行讲解#includebits/stdc.h// 包含所有常用头文件usingnamespacestd;intmain(){inta,b;// 我用 a 存和 Sb 存差 Tcinab;// 读入输入的两个数和、差cout(ab)/2 (a-b)/2;// 直接套用和差公式输出答案return0;}我的核心逻辑直接使用数学公式我不用循环、不用判断直接用数学推导的结果计算代码最短、效率最高、零出错。题目保证有解所以ab和a-b一定是偶数不用考虑除不尽的情况。输出顺序严格匹配要求第一个数是较大数(ST)/2第二个数是较小数(S-T)/2完全满足题目要求。我用样例测试样例输入11 45我的计算(1145)/2 56/2 28(11-45)/2 -34/2 -17输出28 -17和样例完全一致。我的总结我这段代码极致简洁、数学思路清晰直接利用和差问题的经典公式求解。时间复杂度 O(1)能完美通过所有测试点不需要任何修改就能直接 AC。

更多文章