[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]\) 所 ...
随机推荐
- C#系统锁屏事件例子 - 开源研究系列文章
今天有个网友问了个关于操作系统锁屏的问题. 我们知道,操作系统是基于消息和事件处理的,所以我们只要找到该操作系统锁屏和解屏的那个事件,然后在事件里进行处理即可.下面是例子介绍. 1. 项目目录: 下面 ...
- API接口的应用场景
API数据接口的应用非常广泛,不同的行业和领域都可以使用API数据接口来获取所需的数据,从而实现数据分析.数据挖掘.数据统计等操作.以下是一些常见的API数据接口应用场景: 电商平台:例如淘宝.京东等 ...
- 记一次 .NET 某拍摄监控软件 卡死分析
一:背景 1. 讲故事 今天本来想写一篇 非托管泄露 的生产事故分析,但想着昨天就上了一篇非托管文章,连着写也没什么意思,换个口味吧,刚好前些天有位朋友也找到我,说他们的拍摄监控软件卡死了,让我帮忙分 ...
- 整理DB2左补零,右补零的方法
在项目中经常遇到需要左补零,右补零的情况,在DB2实验环境中展示 1.左补零(1)数字左补零,数字长度不定用right(digits(cast(expression as bigint)),NUM)能 ...
- Modbus动态链接库供多语言使用 | Go
Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...
- 其它——Redis与Mysql双写一致性方案解析
文章目录 一 前言 二 一致性方案 三 先更新数据库,再更新缓存 四 先删缓存,再更新数据库 五 先更新数据库,再删缓存 一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取 ...
- Python网络编程——TCP套接字通信、通信循环、链接循环、UDP通信
文章目录 基于TCP的套接字通信 加上通信循环 加上链接循环 基于UDP协议的套接字通信 基于TCP的套接字通信 以买手机的过程为例 服务端代码 import socket # 1.买手机 phone ...
- 教育法学第九章单元测试MOOC
第九章单元测试 返回 本次得分为:100.00/100.00, 本次测试的提交时间为:2020-09-06, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 单选(5分) 作为教师最基本的 ...
- OpenResty入门之压测篇:压测工具界的 “悍马” wrk 审核中
在上篇文章 每个后端都应该了解的 OpenResty 入门以及网关安全实战 中,我向大家介绍了 OpenResty 的入门使用是 WAF 防御实战,这篇文章将给大家继续介绍 OpenResty 入门之 ...
- Vue源码学习(十四):diff算法patch比对
好家伙, 本篇将会解释要以下效果的实现 1.目标 我们要实现以下元素替换的效果 gif: 以上例子的代码: //创建vnode let vm1 = new Vue({data:{name:'张三' ...