[NOI online2022普及B] 数学游戏
题目描述
Kri 喜欢玩数字游戏。
一天,他在草稿纸上写下了 \(t\) 对正整数 \((x,y)\),并对于每一对正整数计算出了 \(z=x\times y\times\gcd(x,y)\)。
可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一组的 \(y\) 都擦除了,还可能改动了一些 \(z\)。
现在 Kri 想请你帮忙还原每一组的 \(y\),具体地,对于每一组中的 \(x\) 和 \(z\),你需要输出最小的正整数 \(y\),使得 \(z=x\times y\times\gcd(x,y)\)。如果这样的 yy 不存在,也就是 Zay 一定改动了 \(z\),那么请输出 \(-1\)。
注:\(\gcd(x,y)\) 表示 xx 和 yy 的最大公约数,也就是最大的正整数 \(d\),满足 \(d\) 既是 \(x\) 的约数,又是 \(y\) 的约数。
输入格式
第一行一个整数 ,表示有 \(t\) 对正整数 \(x\) 和 \(z\)。
接下来 tt 行,每行两个正整数 \(x\) 和 \(z\),含义见题目描述。
输出格式
对于每对数字输出一行,如果不存在满足条件的正整数 \(y\),请输出 \(-1\),否则输出满足条件的最小正整数 \(y\)。
输入输出样例
输入 #1
1
10 240
输出 #1
12
输入 #2
3
5 30
4 8
11 11
输出 #2
6
-1
1
输入 #3复制
见附件中的 math3.in
输出 #3复制
见附件中的 math3.out
输入 #4复制
见附件中的 math4.in
输出 #4复制
见附件中的 math4.out
说明/提示
【样例 1 解释】
\(x\times y\times \gcd(x,y)=10\times 12\times\gcd(10,12)=240\)
【数据范围】
对于 \(20\%\) 的数据,\(t, x, z \le {10}^3\)
对于 \(40\%\) 的数据,\(t \le {10}^3\),\(x \le {10}^6\),\(z \le {10}^9\)。
对于另 \(30\%\) 的数据,\(t \le {10}^4\)
对于另 \(20\%\) 的数据,\(x \le {10}^6\)。
对于 \(100\%\) 的数据,\(1 \le t \le 5 \times {10}^5\),\(1 \le x \le {10}^9\) ,\(1 \le z < 2^{63}\) 。
设\(\gcd(x,y)\)为\(d\),\(x=ad\),\(y=bd\),\(z=abd^3\)
尝试解出\(d\),现在\(z\)中去掉\(a\),\(z\div x =bd^2\)
利用上\(\gcd(a,b)=1\),\(\gcd(x^2,z\div x)\)就是\(d^2\),开个根就能得到\(d\)。
然后用\(z\div x\div d\)就是\(bd\),也就是\(y\)。然后在开根或很多地方可能会出现问题,所以把\(y\)带入式子验证一下。
#include<cstdio>
#include<cmath>
int t,x;
long long z,y,d;
long long gcd(long long x,long long y)
{
if(x<y)
return gcd(y,x);
if(!y)
return x;
return gcd(y,x%y);
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%lld",&x,&z);
y=z/x;
d=sqrt(gcd(1LL*x*x,y));
y=y/d;
if(x*y*gcd(x,y)!=z)
printf("-1\n");
else
printf("%lld\n",y);
}
}
[NOI online2022普及B] 数学游戏的更多相关文章
- 20180606模拟赛T4——数学游戏
数学游戏 题目描述: 小T又发脑残了,没错,她又要求奇怪的东西,这次她想知道[X,Y]之间整数有多少可以表示成K个不同的B的幂的和形势.如\(x,y,k,b=15,20,2,2\),则有: \[17= ...
- [NOIP2015 普及组] 扫雷游戏
[NOIP2015 普及组] 扫雷游戏 难度:入门 题目描述 扫雷游戏是一款十分经典的单机小游戏.在nn行mm列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开 ...
- NOIP2008普及组传球游戏(动态规划)——yhx
题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...
- 桐桐的数学游戏(N皇后)
题目描述 相信大家都听过经典的“八皇后”问题吧?这个游戏要求在一个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上). 桐桐对这个游戏很感兴趣,也 ...
- NOIP2010普及组 三国游戏
题目OJ地址 http://codevs.cn/problem/1129/ https://www.luogu.org/problemnew/show/P1199 题目描述 Description 小 ...
- NOIP2010普及组 三国游戏 -SilverN
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> usin ...
- NOI 97 (Vijos 1464)积木游戏(DP)
很普通的DP,设dp[i][j][k]为第i块积木放在第j堆且摆放状态为k的最高高度.方程很容易推出. # include <cstdio> # include <cstring&g ...
- [牛客OI测试赛2]F假的数学游戏(斯特灵公式)
题意 输入一个整数X,求一个整数N,使得N!恰好大于$X^X$. Sol 考试的时候只会$O(n)$求$N!$的前缀和啊. 不过最后的结论挺好玩的 $n! \approx \sqrt{2 \pi n} ...
- LOJ576 「LibreOJ NOI Round #2」签到游戏
题目 先进行一个转化: 每次花费\(\gcd\limits_{i=l+1}^rB_i\)的代价,可以连\((l,r)\)这一条边. 然后我们需要求\(0\sim n\)的最小生成树. 根据Kruska ...
- 「LibreOJ NOI Round #2」签到游戏
题目 瞎猜一下我们只要\(n\)次询问就能确定出\(\{A_i\}\)来 感受一下大概是询问的区间越长代价就越小,比如询问\([l,n]\)或\([1,r]\)的代价肯定不会超过\([l,r]\) 所 ...
随机推荐
- quarkus数据库篇之三:单应用同时操作多个数据库
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 一个应用同时连接多个数据库进行操作,这是常见 ...
- STM32中SWD下载不进去的解决方法
这是我第一次写自己的博客,希望以后写博客可以当做自己的个人习惯并坚持下去,作为技术分享,也欢迎各位大佬前来指正.本人本科学习的机械电子工程,了解机械制图.嵌入式编程.目前刚好学习了PCB制板,正在向着 ...
- devops之Python编程-类的基础架构
Python中,可以通过关键字class来定义一个类.类是一种自定义数据类型,它可以包含属性(变量)和方法(函数).下面是一个示例: class MyClass: def __init__(self, ...
- selenium-wire兼容selenium和requests
背景 在工作中UI自动化中可能会需要用到API来做一些数据准备或清理的事情,那UI操作是略低效的,但API操作相对高效. 而实战课就有这样一个案例,不过那个案例是UI操作和API分开的. 极少会遇到这 ...
- PDF 补丁丁 1.0 正式版
经过了一年多的测试和完善,PDF 补丁丁发布第一个开放源代码的正式版本了. PDF 补丁丁也是国内首先开放源代码.带有修改和阅读PDF的功能的 PDF 处理程序之一. 源代码网址:https://gi ...
- QA|20221002|SecureCRT中退格键变成了^H
原因:backspace键和delete键的键码映射问题 解决办法一:要使用回删键(backspace)时,同时按住ctrl键 解决办法二:重新设置码值映射关系.比如SecureCRT中,会话 ...
- 用 Rust 的 declarative macro 做了个小东西
最近几天在弄 ddnspod 的时候,写了个宏: custom_meta_struct 解决什么问题 #[derive(Debug, Clone, serde::Serialize, serde::D ...
- EQ 均衡器
EQ 的全称是 Equalizer,EQ 是 Equalizer 的前两个字母,中文名字叫做"均衡器".最早是用来提升电话信号在长距离的传输中损失的高频,由此得到一个各频带相对平衡 ...
- 成本阶问题:财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理?
财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理? 可能原因:生产开立工单时元件未建在生产料件BOM明细中,导致成本阶没有算到,需要手动更改成本阶. 公式: 处理办法:修改成 ...
- 什么???CSS也能原子化!
1.什么是原子化 CSS? Atomic CSS is the approach to CSS architecture that favors small, single-purpose class ...