站外题求助(听说是🏀杯的)
  • 板块题目总版
  • 楼主xzy_awa
  • 当前回复7
  • 已保存回复7
  • 发布时间2025/7/20 11:38
  • 上次更新2025/7/20 17:13:35
查看原帖
站外题求助(听说是🏀杯的)
1062508
xzy_awa楼主2025/7/20 11:38

Problem:

题目描述

下图所示六角星中,填入 11 ~ 1212 的数字(每个数字只能出现一次),使得每条直线上的数字之和都相同。

现在将六角星按照从上到下,从左到右的顺序标记位置。

每种情况会给你第 11 个位置、第 22 个位置、第 1212 个位置对应的数字,及一个星号的位置,请你求出星号位置所代表的数字是多少。

这是编号方式:

        1
2    3     4     5
   6          7
8    9    10     11
       12 

(这里本来有一张图片的,但加载不出来)

输入格式

第一行 33 个数字 n,m,kn,m,k,表示第 11 个位置的数字是 nn,第 22 个位置的数字是 mm,第 1212 个位置的数字是 kk

第二行,一个数字 jj,第 jj 个位置是星号位置。

输出格式

星号位置正确填放的数值。

样例

样例输入

1 8 3
6

样例输出

10

Code:

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int a, b, c, d, cnt, num[10];
bool check()
{
    bool ans1 = (a + num[1] + num[4] + num[8] == 26);
    bool ans2 = (a + num[0] + num[3] + num[5] == 26);
    bool ans3 = (b + num[0] + num[1] + num[2] == 26);
    bool ans4 = (b + num[3] + num[6] + c == 26);
    bool ans5 = (c + num[7] + num[4] + num[2] == 26);
    bool ans6 = (num[5] + num[6] + num[7] + num[8] == 26);
    return ans1 && ans2 && ans3 && ans4 && ans5 && ans6;
}
int main()
{
    cin >> a >> b >> c >> d;
    for (int i = 1; i <= 12; i++)
    {
        if (i != a && i != b && i != c)
            num[cnt++] = i;
    }
    do
    {
        if (check())
            break;
    } while (next_permutation(num, num));
    cout << num[d] << endl;
    return 0;
}
2025/7/20 11:38
加载中...