[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]\) 所 ...
随机推荐
- 实现自动扫描工作区npm包并同步cnpm
省流版: npx cnnc 为避免包名重复,取了2个单词的首尾,cnpm sync 前言 在开发一个多npm包的项目时,时常会一次更新多个包的代码,再批量发布到 npm 镜像源后. 由于国内网络环境的 ...
- Solution -「洛谷 P6287」「COCI 2016-2017」Mag
Description Link. 定义一条链的价值为链上点权乘积除以节链上点数,求一条价值最小的链. Solution 结论:答案链上最多包含一个 \(2\)(其余全为 \(1\)),并且不在链的两 ...
- Teamcener AWC Solr链接被拒
1.检查安装Solr安装情况 2.在tem上勾选添加 安装完成后,总共有2个文件夹需要注意,一个 solr-版本 的文件夹,一个 TcFTSindexer 的文件夹 如果是solr安装的是服务,则不需 ...
- EarthChat SignalR原理讲解
SignalR原理讲解 SignalR是什么? SignalR 是 Microsoft 开发的一个库,用于 ASP.NET 开发人员实现实时 web 功能.这意味着服务端代码可以实时地推送内容到连接的 ...
- Markdown · Typora | 基本画图技巧
如果想画一些简单的状态图,可以使用 typora 自带的 mermaid 工具. (mermaid 不止能画简单的状态图,还能画流程图等,详见参考资料) 定义节点 可以定义不同形状的节点,并为节点添加 ...
- Tarjan强连通分量详解
1.简介: 在阅读下列内容之前,请务必了解 图论相关概念 中的基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly Connected Compo ...
- 高效数据传输:Java通过绑定快速将数据导出至Excel
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 把数据导出至 Excel 是很常见的需求,而数据的持久化 ...
- Java 位运算的解读 & | ^ ~ << >>
Java中的位运算包括以下几种: 按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0. int a = 3; // 二进制 0011 int b = 5; // 二进制 0101 ...
- js数据结构--栈
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- Kubernetes文档支持的版本
简介 https://kubernetes.io/zh-cn/docs/ 官方中文网站一共是可以阅读5个k8s版本的文档.这5个版本包括k8s最新版和最近的4个版本.例如当前最新版是1.28,那么文档 ...