codeforces Round680 C. Division 题解

2023-05-16

codeforces Round680 C. Division 题解

题目

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 t t pairs of integers p i p_i pi and q i q_i qi and for each pair decided to find the greatest integer x i x_i xi, such that:

  • p i p_i pi is divisible by x i x_i xi;
  • x i x_i xi is not divisible by q i q_i 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 t t ( 1 ≤ t ≤ 50 ) (1≤t≤50) (1t50) — the number of pairs.

Each of the following t t t lines contains two integers p i p_i pi and q i q_i qi ( 1 ≤ p i ≤ 1 0 18 ; 2 ≤ q i ≤ 1 0 9 ) (1≤ p_i≤10^{18}; 2≤q_i≤10^9) (1pi1018;2qi109)— the i − t h i-th ith pair of integers.

Output

Print t t t integers: the i − t h i-th ith integer is the largest x i x_i xi such that p i p_i pi is divisible by x i x_i xi, but x i x_i xi is not divisible by q i q_i qi.

One can show that there is always at least one value of x i x_i xii 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 p 1 = 10 p_1=10 p1=10 and q 1 = 4 q_1=4 q1=4, the answer is x 1 = 10 x_1=10 x1=10, since it is the greatest divisor of 10 10 10 and 10 10 10 is not divisible by 4 4 4.

For the second pair, where p 2 = 12 p_2=12 p2=12 and q 2 = 6 q_2=6 q2=6, note that

  • 12 12 12 is not a valid x 2 x_2 x2, since 12 12 12 is divisible by q 2 = 6 q_2=6 q2=6;
  • 6 6 6 is not valid x 2 x_2 x2 as well: 6 6 6 is also divisible by q 2 = 6 q_2=6 q2=6.

The next available divisor of p 2 = 12 p_2=12 p2=12 is 4 4 4, which is the answer, since 4 4 4 is not divisible by 6 6 6.

题意

找一个最大的 x x x,满足 p   %   x = = 0   a n d   x   %   q ! = 0 p\ \%\ x == 0 \ and\ x\ \%\ q != 0 p % x==0 and x % q!=0

思路

质因数分解

  • p   %   q   ! =   0 p\ \%\ q\ !=\ 0 p % q != 0 x = p x = p x=p
  • p   %   q   =   0 p\ \%\ q\ =\ 0 p % q = 0 , 那么 p p p一定包含 q q q的所有质因数分解的结果。

举例:

p = 12    q = 6 p = 12\ \ q = 6 p=12  q=6
p = 2 2 ∗ 3 1 p = 2^2 * 3^1 p=2231 q = 2 1 + 3 1 q = 2^1 +3^1 q=21+31

要使 p   %   q   ! =   0 p\ \%\ q\ !=\ 0 p % q != 0, 只要使 p p p 将质因数 2 2 2降幂到 0 0 0(也就是q的质因数 2 2 2的次幂之下),或者将 3 3 3 的幂降到 0 0 0

所以,我们只需要枚举 q q q的质因子, 找权值最小的,即为答案。

代码

#include <bits/stdc++.h>
using namespace std;
#define ll unsigned long long
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
const int maxn = 2e5 + 10;
int ans[maxn];

void solve(){
    ll p, q;
    cin >> p >> q;
    if(p % q) { //p不能被q整除,答案就是p
        cout << p << endl;
        return;
    }
    ll ans = 0;
    for (ll i = 1; i * i <= q; i++){
        if(q % i) continue; // 不是q的因子
        //i 和 q/i 都是因子
        ll t = p;
        if(i != 1){
            while(t % q == 0) t /= i; 
            ans = max(ans, t);
        }
        t = p;
        while(t % q == 0) t /= (q / i);
        ans = max(ans, t);
    }
    cout << ans << endl;
}
int main(){
    IOS; int t; cin >> t;
    while(t--){
        solve();
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

codeforces Round680 C. Division 题解 的相关文章

  • Codeforces Round #561 (Div. 2)ABC

    三个题 各位大佬别喷我 我很菜 A Silent Classroom There are n students in the first grade of Nlogonia high school The principal wishes
  • 【codeforces】 ZeptoLab Code Rush 2015 A,B,C,D,E题解

    D E统统FST 差一点就飞升了 A King of Thieves 给你一张地图 让你从某个 开始跳等步长的四次 如果均在 则输出yes 否则输出no 枚举起始点和步长直接做就可以了
  • 【codeforces #290(div 1)】ABC题解

    A Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard o
  • Educational Codeforces Round 149 (Rated for Div. 2)A~D

    Grasshopper on a Line 题意 给出n和k 求从0到n最少走几步 以及步长 要求步长不能整除k 思路 从n往下找到 k不等于0的数 输出该数和n 该数即可 如果n k 0 那就只需要一步 代码 gt File Name a
  • 1600*B. pSort(并查集)

    解析 并查集 将能够交换的位置相连 查看对应的位置能够交换 include
  • 为什么 Python 3.4 对于大数除法给出错误的答案,如何测试整除性? [复制]

    这个问题在这里已经有答案了 在我的程序中 我使用除法来测试结果是否是整数 我正在测试整除性 但是 我得到了错误的答案 这是一个例子 print int 724815896270884803 61 给出 11882227807719424 p
  • Delphi 6 编译器选项(奔腾安全 FDIV)

    我收到了一位用户来自 MadExcept 的崩溃报告 异常是无效的浮点运算 但奇怪的是 调用堆栈在 FSafeDivide 处终止 我谷歌了一下 发现这是对某些没有正确除法的奔腾芯片的检查 如果测试失败 所有划分都将在软件而不是硬件中完成
  • 为什么整数除法代码给出错误的答案? [复制]

    这个问题在这里已经有答案了 我在 Java 中有一个非常简单的划分 它是产品数量 每小时产量 但是每当我进行这种划分时 我都会遇到奇怪的错误 float res quantity standard 我已经用几个值尝试了上述除法 但总是出错
  • 在sqlite中将int转换为real

    sqlite 中的除法返回整数值 sqlite gt select totalUsers totalBids from select select count from Bids as totalBids select count from
  • 非恢复除法算法

    有谁知道使用非恢复除法除法无符号二进制整数的步骤 很难在网上找到任何好的资源 i e if A 101110 and B 010111 我们如何找到A divided by B在非恢复分裂中 每个步骤中的寄存器是什么样的 Thanks 我的
  • 更改 JSlider 的可显示标签?

    我有一个 JSlider 最小值为 0 最大值为 10 000 我将主要刻度线设置为 1 000 如果我现在绘制标签 它们将显示为 0 1000 2000 3000 4000 等 我希望显示的是 0 1 2 3 4 5 等 是完成这项任务的
  • 汇编器 64b 除法

    我需要一些简单的方法来在 x86 的汇编器中除以 64b 无符号整数 我的号码保存在两个 32b 寄存器 EDX EAX 中 我需要将结果放回 EDX EAX 因数为 32b 整数 请给一些代码 如果我正确解释你的问题 特别是这部分Fact
  • JavaScript 中浮点数的除法

    我试图将屏幕宽度除以一个变量 以便在 web 视图中绘制等距的 UI 部分 然而 当变量为 3 时 100 3 在 JavaScript 中结果为 33 3333333333333336 并且第三部分无法按预期绘制 因为商的总和大于 100
  • 在.NET中除两位小数时出现溢出异常

    我在尝试除以两位小数然后显示结果时遇到问题 令人烦恼的是 这只发生在我们的服务器上 如果我在本地运行代码 它似乎工作得很好 这是我试图运行的代码 decimal dOne 966 96M decimal dTwo 2300M decimal
  • 为什么 0 除以 0 会出错?

    我在代码中进行的计算中遇到了这个问题 如果除数也为 0 则除数为 0 在我的代码中 对于这种情况我返回 0 我想知道 虽然除以零通常是未定义的 但为什么不为这种情况破例呢 我的理解为什么除以零是未定义的基本上是它不能逆转 然而 我在 0 0
  • bcdiv 使用带有科学记数法的非常小的浮点导致“除以零”错误

    使用 bcdiv 我无法使用科学记数法除以小浮点数 工作代码 bcscale 30 a 1 b 0 00000001 result bcdiv a b var dump result 结果是 字符串 20 100000000 0000000
  • 在Python中,整数除法中向零舍入的好方法是什么?

    1 2 gives 0 正如它应该 然而 1 2 gives 1 但我希望它向 0 舍入 即我希望 1 2 为 0 无论它是正数还是负数 最好的方法是什么 进行浮点除法 然后转换为 int 不需要额外的模块 Python 3 gt gt g
  • 具有非常大的数字的除法

    我只是想知道在处理大数字时有哪些不同的除法策略 我所说的大数字是指 50 位数字 例如 9237639100273856744937827364095876289200667937278 82637448262718273966299344
  • colorForth /mod 算法如何工作?

    我一直在看查克 摩尔 https en wikipedia org wiki Charles H Moore s 彩色前 https en wikipedia org wiki ColorForth最近 我发现了这段代码 以传统语法呈现 m
  • 除法和乘法 2 的幂

    我在一篇论文中读到 数字除以 2 的幂并乘以 2 的幂是一个微不足道的过程 我在互联网上搜索了很多解释 但没有得到它 任何人都可以用简单的语言解释一下这实际上意味着什么 从位操作的角度来看 这是微不足道的 乘以2相当于左移1位 除法相当于右

随机推荐

  • 嵌入式第0部分:嵌入式工程师完全学习指南

    一 什么是嵌入式 xff08 一 xff09 定义 xff1a 传统定义 xff08 狭义嵌入式 xff09 xff1a 嵌入式系统是以应用为中心 xff0c 以计算机技术为基础 xff0c 并且软硬件课裁剪 xff0c 适用于应用系统对功
  • 【SLAM 十四讲】---第七讲、视觉里程计

    第七讲 视觉里程计
  • Vscode配置git

    1 Git介绍和安装 Git是什么 Git是目前世界上最先进的分布式版本控制系统 xff08 没有之一 xff09 简单来说 它是控制项目版本的一个工具 我们可以利用Git进行多人协作和代码备份等工作 下载git xff08 64bit w
  • Xshell连接虚拟机Ubantu失败解决办法(主机和虚拟机能够互ping的前提)

    主机和虚拟机互ping 在主机命令行里输入ipconfig指令 xff0c 查询主机ip地址 xff0c 在虚拟机Ubantu终端里输入ping 主机ip地址 xff0c ping通后 xff0c 按ctrl 43 c停止 在虚拟机Uban
  • windows 11系统安装

    安装前注意事项 1 准备8G或8G以上U盘 xff08 32G以内 xff09 2 安装系统前备份好个人需要数据 xff08 制作U盘会格式化U盘 xff0c U盘内的重要文件也要事先备份好 xff09 3 预装office的务必记住自己激
  • docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at

    一 前言 docker安装完成 xff0c 一般用户没有权限启动docker服务 xff0c 只能通过sudo来通过root用户权限来启动docker xff0c 此时对于一般用户而言 xff0c 需要执行docker ps或者docker
  • Neo4j(七)——创建新数据库(如何在Neo4j中创建新数据库)

    方法一 xff1a 找到neo4j安装目录 xff0c 编辑conf文件夹中的neo4j conf 找到dbms active database 61 xff0c 将下图中的graph db用其他名称替换 xff0c 并解除注释 xff08
  • python VScode使用gitlab简单使用流程

    一 下载安装软件 1 安装好vscode xff0c 如未安装 xff0c 下载并且安装 https code visualstudio com Download 2 安装git windows客户端 https git scm com d
  • keil5工程函数无法跳转到函数定义解决方法

    问题描述 在使用keil查看工程代码时 xff0c 进行函数的跳转 xff0c 跳转不成功并提示以下错误 这是因为在编译工程的时候少勾选了一个选项 xff0c 按下以下方式勾选上然后重新Rebuild一下工程就好了
  • Codeforces D. Prefix-Suffix Palindrome

    Codeforces D Prefix Suffix Palindrome 题解 xff1a 和D1相同 xff0c 区别是找中间的回文串要压缩时间 xff0c 用到了马拉车算法 xff08 算法介绍在下面 xff1a span class
  • codeforces 1326 E.Bombs

    codeforces 1326 E Bombs 题意 xff1a 给定 1 n 1 n 1 n 的排列p q xff0c 将
  • Educational Codeforces Round 84 题解

    Educational Codeforces Round 84 题解 A Sum of Odd Integers 题意 xff1a n n n 是否能表示为 k k k 个不同的正奇
  • codeforces 1332 E - Height All the Same(组合数学、奇偶性)

    codeforces 1332 E Height All the Same 组合数学 奇偶性 题意 xff1a 现在有一个 n m n m n m 的方格 xff0c 第 i
  • codeforces 1330 C.D.题解

    codeforces 1330 C D 题解 Dreamoon Likes Coloring 题意 xff1a 给 n lt 61 100000 n lt 61 100000 n lt 61
  • LeetCode数独问题中Bitset的巧妙用处

    LeetCode数独问题中Bitset的巧妙用处 36 有效的数独 判断一个 9x9 的数独是否有效 只需要根据以下规则 xff0c 验证已经填入的数字是否有效即可 数字 1 9 在每一行只能出现一次 数字 1 9 在每一列只能出现一次 数
  • Morris 遍历

    Morris 遍历 中序遍历 前言 我们在中序遍历的时候 一定先遍历左子树 然后遍历当前节点 最后遍历右子树 在常规方法中 我们用递归回溯或者是栈来保证遍历完左子树可以再回到当前节点 但这需要我们付出额外的空间代价 我们需要用一种巧妙地方法
  • 第九届蓝桥杯c/c++A组省赛题解

    分数 题目 1 1 43 1 2 43 1 4 43 1 8 43 1 16 43 每项是前一项的一半 xff0c 如果一共有20项 求这个和是多少 xff0c 结果用分数表示出来 类似 xff1a 3 2 当然 xff0c 这只是加了前2
  • Ltp介绍及实践(20200925)

    Ltp中源代码和模型包括 xff1a 中文分词 词性标注 未登录词识别 依存句法 语义角色标注几个模块 目录 1 标注集合 分词标注集 词性标注集 命名实体识别标注集 依存句法关系 语义角色类型 2 快速使用 载入模型 分句 用户自定义词典
  • 第十一届蓝桥杯省赛C/C++B组题解

    试题 A 跑步训练 本题总分 xff1a 5 分 题目 问题描述 小明要做一个跑步训练 初始时 xff0c 小明充满体力 xff0c 体力值计为 10000 如果小明跑步 xff0c 每分钟损耗 600 的体力 如果小明休息 xff0c 每
  • codeforces Round680 C. Division 题解

    codeforces Round680 C Division 题解 题目 Oleg s favorite subjects are History and Math and his favorite branch of mathematic