Division CodeForces - 1445C(数论因子相关)

题意:

找一个最大的数X,使p%x==0且x%q!=0,题目保证至少有一个答案满足题意。

题目:

Oleg’s favorite subjects are History and Math, and his favorite branch of mathematics is division.

To improve his division skills, Oleg came up with t pairs of integers pi and qi and for each pair decided to find the greatest integer xi, such that:

pi is divisible by xi;
xi is not divisible by qi.
Oleg is really good at division and managed to find all the answers quickly, how about you?

Input

The first line contains an integer t (1≤t≤50) — the number of pairs.

Each of the following t lines contains two integers pi and qi (1≤pi≤1018; 2≤qi≤109) — the i-th pair of integers.

Output

Print t integers: the i-th integer is the largest xi such that pi is divisible by xi, but xi is not divisible by qi.

One can show that there is always at least one value of xi satisfying the divisibility conditions for the given constraints.

Example

Input

3
10 4
12 6
179 822

Output

10
4
179

Note

For the first pair, where p1=10 and q1=4, the answer is x1=10, since it is the greatest divisor of 10 and 10 is not divisible by 4.

For the second pair, where p2=12 and q2=6, note that

12 is not a valid x2, since 12 is divisible by q2=6;
6 is not valid x2 as well: 6 is also divisible by q2=6.
The next available divisor of p2=12 is 4, which is the answer, since 4 is not divisible by 6.

分析:

1.先说当题目至少满足一个X,使之满足条件,分析可得,这个值为1,需要特判;
2.我在大犇博客借鉴的,嘻嘻:

显然,当 p与q不满足整除关系(p%q != 0) 时,最大的x就是p本身,这个简单。
但是当 p % q == 0 时怎么办呢?
不难发现,当 p % q == 0 时,
我们令 q = A * B ,
则 p = An * Bn * C , 其中C是一个与A,B均不满足整除关系的整数。
那么,从每一个 x = p / An 中找到的x(max)不就是结果了吗?
显然,A、B的集合就是q的所有因子,我们只需要O(sqrt(n))的时间来找出它们。
对于An,我们只需要让p不断的除以因子A直到p不再能被q整除就行了。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,t,ans;
ll solve(int x){if(x==1) return  x;ll num=n;while(num%m==0)num/=x;return num;
}
void dfs(ll x){for(int i=1;i*i<=x;i++){if(x%i==0){int a=i,b=x/i;ans=max(ans,solve(a));ans=max(ans,solve(b));}}
}
int main(){cin>>t;while(t--){ans=0;cin>>n>>m;dfs(m);if(ans!=0)cout<<ans<<endl;else cout<<"1"<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Windows Terminal 连接远程主机

使用 Windows Terminal 连接远程主机IntroWindows Terminal 是微软新推出来的一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性&#xff0c;例如&#xff1a;多 Tab 支持、富文本、多语言支持、可配置、主题和样式&#xff0c;支持 emoji 和基于 G…

[JavaWeb-MySQL]DML_操作表

DML&#xff1a;增删改表中数据 1. 添加数据&#xff1a;* 语法&#xff1a;* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);* 注意&#xff1a;1. 列名和值要一一对应。2. 如果表名后&#xff0c;不定义列名&#xff0c;则默认给所有列添加值insert into …

.Net Core实现区块链初探

区块链这么火&#xff0c;咱也跟个风。一、前言最近&#xff0c;银行总行关于数字货币即将推出的消息频传&#xff0c;把BTC也带得来了一波反弹。借着这个风&#xff0c;我们也研究一下区块链。通常大家说到区块链&#xff0c;实际包括两部分概念&#xff1a;第一个概念&#x…

Divide and Sum CodeForces - 1445D(排列组合+逆元)

题意&#xff1a; 给定一个长度为2n的数组&#xff0c;将数组分成两个长度为n的数组p,q&#xff0c;将p从小到大排序&#xff0c;将q从大到小排序&#xff0c;对于每种分法&#xff0c;f(p,q)∑i1n\sum_{i1}^{n}∑i1n​|xi−yi|.求总和 题目&#xff1a; You are given an a…

[Java基础]自定义注解之属性定义

代码如下: package AnnoDemo01;public enum Person {p1,p2; }package AnnoDemo01;public interface MyAnno2 {}package AnnoDemo01;public interface MyAnno {int show1();String show2();Person per();MyAnno2 ann02();String[] strs(); }定义了属性&#xff0c;在使用时需要…

微软开源 Tye 项目,可简化微服务开发

微软近期开源了一款开发人员工具 Tye&#xff0c;能够用于简化微服务以及分布式应用程序的开发、测试以及部署过程。项目地址&#xff1a;https://github.com/dotnet/tye。该项目负责人 Amiee 表示&#xff0c;在构建由多个项目组成的应用程序时&#xff0c;开发者通常希望能够…

Subset POJ - 3977(折半枚举+二分+二进制枚举)

题意&#xff1a; 给你一个集合N&#xff08;N<35&#xff09;,问集合的子集&#xff0c;除了空集&#xff0c;使得自己中所有元素和的绝对值最小&#xff0c;若存在多个值&#xff0c;那么选择子集中元素最少的那个。 题目&#xff1a; Given a list of N integers with…

.NET内存管理五大基础知识

1.小对象怎么处理的&#xff1f;小型.NET对象被分配到小型对象堆&#xff08;SOH&#xff09;上。其中有3种&#xff1a;第0代&#xff0c;第1代和第2代。对象根据其寿命向上移动。将新对象放在Gen 0上。当Gen 0充满时&#xff0c;.NET垃圾收集器&#xff08;GC&#xff09;运行…

L1-046 整除光棍 (20分)(模拟除法竖式求商的位运算)

题目&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#…

Sql Server之旅——第十站 简单说说sqlserver的执行计划

我们知道sql在底层的执行给我们上层人员开了一个窗口&#xff0c;那就是执行计划&#xff0c;有了执行计划之后&#xff0c;我们就清楚了那些烂sql是怎么执行的&#xff0c;这样 就可以方便的找到sql的缺陷和优化点。一&#xff1a;执行计划生成过程说到执行计划&#xff0c;首…

【半译】扩展shutdown超时设置以保证IHostedService正常关闭

我最近发现一个问题&#xff0c;当应用程序关闭时&#xff0c;我们的应用程序没有正确执行在IHostedService中的StopAsync方法。经过反复验证发现&#xff0c;这是由于某些服务对关闭信号做出响应所需的时间太长导致的。在这篇文章中&#xff0c;我将展示出现这个问题的一个示例…

java基础知识——基础语法

java的基本语法格式 [修饰符] class 类名{程序代码 }方法的定义 一般情况下&#xff0c;定义一个方法包含以下语法&#xff1a; 修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值; }JAVA标识符规范&#xff1a; 1.标识符可以由任意顺序的大小写字母、…

[JavaWeb-MySQL]多表关系介绍

多表之间的关系 1. 分类&#xff1a;1. 一对一(了解)&#xff1a;* 如&#xff1a;人和身份证* 分析&#xff1a;一个人只有一个身份证&#xff0c;一个身份证只能对应一个人2. 一对多(多对一)&#xff1a;* 如&#xff1a;部门和员工* 分析&#xff1a;一个部门有多个员工&am…

Asp.Net Core多榜逆袭,这是.NET最好的时代!

摒弃侥幸之念&#xff0c;必取百炼成钢。厚积分秒之功&#xff0c;始得一鸣惊人&#xff01;经过多年的沉沦&#xff0c;.NET终于迎来逆袭&#xff01;近期连出多个排行榜&#xff0c;Asp.Net Core直接霸榜&#xff0c;这意味着属于.Neter的好时代的即将到来&#xff01;.Net C…

[JavaWeb-MySQL]数据库的备份和还原

数据库的备份和还原 1. 命令行&#xff1a;* 语法&#xff1a;* 备份&#xff1a; mysqldump -u用户名 -p密码 数据库名称 > 保存的路径* 还原&#xff1a;1. 登录数据库2. 创建数据库3. 使用数据库4. 执行文件。source 文件路径 2. 图形化工具&#xff1a;备份完成!!! 现…

SiteServer CMS 新版本 V6.15(2020年6月1日发布)

欢迎来到 SiteServer CMS V6.15版本&#xff0c;新版本重点增加了 REST API 的接口调用&#xff0c;同时修复了多项BUG:REST API 接口增强&#xff1a;通过REST API&#xff0c;第三方系统可以很好地集成 SiteServer CMS&#xff0c;以下是最新的API接口&#xff0c;涵盖了CMS操…

JAVA中小细节(易忽视和易错点)

在为一个long类型的变量赋值时&#xff0c;所赋值的后面要加上一个字母L&#xff08;l&#xff09;&#xff0c;说明赋值为long类型&#xff0c;但如果赋值未超出int取值范围&#xff0c;可以忽略。在为一个float类型的变量赋值时&#xff0c;所赋值的后面要加上一个字F&#x…