高山 发表于 2022-9-18 18:57:15

C++题解:谁在对面?【回复可见】

本帖最后由 高山 于 2022-9-19 21:15 编辑

原创声明:本帖题目素材来源于网络,但题解自创,原题及代码测试链接:https://codeforces.com/problemset/problem/1560/B
题目说明:


有n个人(编号1~n)顺时针坐成一圈,例如,当n=6时:



可以发现1和4、2和5、3和6是面对面坐的
现在,不知道n的值,只告诉你3个数字a b c,代表a和b是面对面做的,请问和c面对面坐的人是谁?
数据范围:1≦t≦104,1≦a,b,c≦108
样例输入(多测题,打1反1)
4
2 5 4
6 2 4
2 3 1
2 4 10样例输出:
1
8
-1
-1
代码:**** Hidden Message *****演示视频在评论区置顶评论

howzyao 发表于 2022-9-20 16:21:35

根据图示,3可以定义为宏

bsbbssbs 发表于 2022-9-20 17:05:14

1

zhangjinxuan 发表于 2022-9-20 18:52:09

不知为什么会WA{:10_243:}

#include <cstdio>

using namespace std;

#define abs(x) ((x) > 0 ? (x) : -(x))

int main() {
        int test, a, b, c, n;
        scanf("%d", &test);
        while (test--) {
                scanf("%d%d%d", &a, &b, &c);
                n = abs((a - b) * 2);
                if (a > n || b > n || c > n)
                        printf("-1\n");
                else {
                        int tmp = abs(c - n / 2);
                        if (tmp == 0)
                                tmp = n;
                        printf("%d\n", tmp);
                }
        }
}

zhangjinxuan 发表于 2022-9-20 18:58:21

TM的,我数学没学好{:10_282:}
页: [1]
查看完整版本: C++题解:谁在对面?【回复可见】