题解 | 第三心脏

第三心脏

https://www.nowcoder.com/practice/7a18dc66ff5142c58ae86a6cfecd8ac6

人多力量大啊,群友助我破鼎!

本题代码很简单,但是要点思维

观察样例可发现,拿第三组数据举例子,应该是2*a。

但是第一组又不是这样的,因为b=2*a了,所以输出的变成了3*a

而观察第二组又发现,b!=2*a了,可还是不可以输出2*a,为什么呢?

因为2和第二组数据的第二个数的gcd为2,不等于gcd(2,7)

所以经过以上分析,我们基本就明白了——要求的就是在b除gcd(a,b)后得到的数尽可能贴近2,再拿这个数*a即可

要想尽可能接近2,就要从2开始不断+1,如果发现了1个k的值满足等于1了的话就说明gcd(a,b)=gcd(b,c)

光这么说很抽象,举个例子吧:

12 72

如果直接输出24,很显然,gcd分别为12,24,并不相同,不符合题意,而12和24不相同的根本原因就是a/gcd(a,b)=1,而b/gcd(a,b)=6,6是合数!有因子2和3,这就导致如果最后输出的是2*a,3*a甚至4*a的话,都会使gcd(b,c)多乘上了这个因子!进而导致gcd变成原来的因子倍!所以我们要找的就是gcd(b,c)和k互质的时候,最小的k是几。(此处为5)

最后附上代码awa

#include <bits/stdc++.h>
using namespace std;

#define sc second
#define fr first
#define int long long
#define itn long long
#define fro for
#define vi vector<int>
#define vvi vector<vector<int>>
#define pii pair<int, int>
#define endl '\n'
#define all(qwq) qwq.begin(), qwq.end()
#define ui unordered_map<int, int>
#define pq priority_queue
#define pi acos(-1)

// const int dx[4] = {-1, 1, 0, 0};
// const int dy[4] = {0, 0, -1, 1};
// const int dx[8] = {-1, 0, 1, 1, 1, 0, -1, -1};
// const int dy[8] = {1, 1, 1, 0, -1, -1, -1, 0};
// const int dx[12] = {-1, 0, 1, 1, 1, 0, -1, -1, 0, 2, -2, 0};
// const int dy[12] = {1, 1, 1, 0, -1, -1, -1, 0, 2, 0, 0, -2};
// const int mod = 998244353;
// const int mod = 1e9 + 7;

int m, n, k, x, y, num, op, sum = 0, cnt = 0;
string s;

void _()
{
    int a, b;
    cin >> a >> b;
    int k = 2;
    while (gcd(k, b / gcd(a, b)) != 1)//在详细解释中,此处的“k”为待取的最小值, b / gcd(a, b)) 为6,若二者互质则可以取到
    {
        k++; //找到最小的k
    }
    cout << k * a << endl;//ak!(一语双关)
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(nullptr), cout.tie(nullptr);
    int awa = 1;
    cin >> awa;
    while (awa--)
    {
        _();
    }
    return 0;
}

思路来源——粉丝群群友,************,***************(牛客不让发群号qwq)

全部评论

相关推荐

小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务