专栏文章
[P14079]最短距离-题解
P14079题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minry76d
- 此快照首次捕获于
- 2025/12/02 07:22 3 个月前
- 此快照最后确认于
- 2025/12/02 07:22 3 个月前
本题需要分类讨论,共3种情况:
1.a,b互质。此时我们明显能想到输出p,但要是q比p小很多,还真不一定。我们推一下,容易想到以a*b作为桥梁,这样,代价就是2q。输出p与2q之间小的那个即可。千万要注意,当a,b之间有一个是1的时候,一定要输出p!
2.a,b不互质。同理,输出q与2p之间小的那个即可。
3.一定不要忘了a=b的时候输出0!
CPP1.a,b互质。此时我们明显能想到输出p,但要是q比p小很多,还真不一定。我们推一下,容易想到以a*b作为桥梁,这样,代价就是2q。输出p与2q之间小的那个即可。千万要注意,当a,b之间有一个是1的时候,一定要输出p!
2.a,b不互质。同理,输出q与2p之间小的那个即可。
3.一定不要忘了a=b的时候输出0!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,p,q;
cin>>n>>p>>q;
while(n--)
{
int a,b;
cin>>a>>b;
if(a==b)
{
cout<<0<<endl;
continue;
}
if(__gcd(a,b)==1)
{
if(a==1||b==1)
{
cout<<p<<endl;
}
else
{
cout<<min(p,2*q)<<endl;
}
}
else
{
cout<<min(q,2*p)<<endl;
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...