ZCMU - 1951: ly和wjw的无聊游戏
发布日期:2021-06-30 23:40:53 浏览次数:2 分类:技术文章

本文共 705 字,大约阅读时间需要 2 分钟。

题目链接:

 

题目大意:略。

 

解题思路:我们考虑将 a 和 b 合起来考虑:

a*b=k1^3*k2^3*k3^3*...kn^3=(k1*k2*...kn)^3
所以 a*b 可以表示为某个数的三次方,但是这只是一个必要条件,显然我们还需要考虑对任意 ki,a 和 b 的因子都都有它,因为赢的人乘 ki^2,输的的人乘 ki,也就是幂次比为 1:2 或 2:1,不能存在 0:3 的情况
这时候我们可以发现,若将a进行平方操作,
那么本来 a 胜的回合,ki 的幂次变为 4,ki^4,a 败的回合 ki 的幂次变为 2,ki^2
这时候我们可以发现对应的 b,若 a 胜,ki^1,若 a 败,ki^2,我们可以发现就呈倍数,可以直接判断 a*a%b==0
反过来也一样,需要满足 b*b%a==0
总结一下满足条件的答案 a,b 则需要满足
1、a*a%b==0
2、b*b%a==0
3、存在 x 使得 a*b=x^3
所以二分搜一下 x 是否存在就行了。

 

AC 代码

#include
#include
#define mem(a,b) memset(a,b,sizeof a);#define INF 0x3f3f3f3fusing namespace std;typedef long long ll;int jde(ll x){ ll l=0,r=1000000,m; while(l<=r) { m=l+((r-l)>>1); if(m*m*m==x) return 1; else if(m*m*m

 

转载地址:https://lux-sun.blog.csdn.net/article/details/81148118 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ZCMU - 1934: ly的二叉树
下一篇:ZCMU - 1931: wjw的剪纸

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月08日 23时32分30秒