CF1444A Division 求质因数的方法
2020.12.20 求质因数的方法
#include<bits/stdc++.h>
#define ll long long
#define fp(i,a,b) for(int i=a;i<=b;i++)
#define sfp(i,a,b) for(int i=a;i<b;i++)
const ll N = 1e6+10;
using namespace std;
ll t;
ll p,q,cnt;
ll a[N],cnt1[N],cnt2[N];
void solve()
{
cin>>p>>q;
if(p%q!=0) cout<<p<<endl;
else
{
cnt=0;
ll b=sqrt(q);
ll P=p;
//求q的质因数用a[]存起来,用cnt1存含有的个数
fp(i,2,b)
{
if(q%i==0) a[++cnt]=i;
while(q%i==0)
{
cnt1[cnt]++;
q/=i;
}
}
if(q>1) //如果q本身就是质数
{
a[++cnt]=q;
cnt1[cnt]=1;
}
//OVER
fp(i,1,cnt)
{
while(p%a[i]==0)
{
cnt2[i]++;
p/=a[i];
}
}
ll ans=0;
fp(i,1,cnt)
{
ll c=cnt2[i]-cnt1[i]+1;
ll sum=1;
for(int j=1;j<=c;j++) sum*=a[i];
//sum=pow(a[i],c);
ans=max(ans,P/sum);
}
cout<<ans<<endl;
fp(i,1,cnt) cnt1[i]=0,cnt2[i]=0;
}
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
cin>>t;
while(t--) solve();
}
求数的质因数打方法在代码里面(注释)
该题的思路是找当p%q==0时,也就是q为p一个因子时,p中其他因子,且不能被q整除的最大值。
先将q拆除质因数表示的形式 如12=223(两个2和一个3),由于q为p因数,故p也含有这些质因数,将相同质因数的个数相减+1去枚举求出最大的因子。
P = 12 = 2 * 2 * 3 , Q = 6 = 2 * 3 , p2 - q2 + 1 = 2 , 2 * 2=4 有点抽象
CF1444A Division 求质因数的方法的更多相关文章
- 2.C# 输入一个整数,求质因数
C# 输入一个整数,求质因数 List<int> results = new List<int>(); int number = Int32.Parse(Console.Rea ...
- 【做题记录】CF1444A Division
CF1444A Division 题意: 给定 \(t\) 组询问,每组给两个数 \(p_i\) 和 \(q_i\) ,找出最大的整数 \(x_i\) ,要求 \(p_i\) 可被 \(x_i\) 整 ...
- 水题挑战6: CF1444A DIvision
A. Division time limit per test1 second memory limit per test512 megabytes inputstandard input outpu ...
- C# 输入一个整数,求质因数
质数,质因数 应该都了解,在这里不过多解释,直接上代码: List<int> results = new List<int>(); int number = Int32.Par ...
- 题解【CF1444A Division】
题面 t 组数据. 给定参数 p,q,求一个最大的 x,满足 \((x|p)∧(q∤x)\). \(1\le t \le 500\),\(1\le p \le10^{18}\),\(2\le q\le ...
- 集训第六周 数学概念与方法 J题 数论,质因数分解
Description Tomorrow is contest day, Are you all ready? We have been training for 45 days, and all g ...
- HDU 6069
Counting Divisors Problem Description In mathematics, the function d(n) denotes the number of diviso ...
- 经典算法问题的java实现 (一)
原文链接: http://liuqing-2010-07.iteye.com/blog/1396859 1.如何计算闰年(Leap Year)? 四年一闰:百年不闰:四百年再闰. 具体参照 ...
- 快速求出n!的质因数的个数
一般做组合数的题目都要进行质因数的分解,我们一般是for循环对每个数进行质因数分解,大多数情况都不会超时,但极少数的情况下,题目会不允许这样的做法,所以我们需要学会一种更快的方法来求质因数. 我们一般 ...
随机推荐
- [源码解析] 并行分布式框架 Celery 之 worker 启动 (1)
[源码解析] 并行分布式框架 Celery 之 worker 启动 (1) 目录 [源码解析] 并行分布式框架 Celery 之 worker 启动 (1) 0x00 摘要 0x01 Celery的架 ...
- .Net Core 3.1浏览器后端服务(五) 引入定时任务Quartz.Net
一.前言 近期项目中遇到一些需求,需要定时写入数据库,定时刷新缓存的问题,因此需要引入任务调度机制. 我的选择是使用 Quartz.Net,使用的版本是 3.2.4 这里强调一点:3.x的版本与2.x ...
- std::thread线程库详解(5)
目录 目录 前言 信号量 counting_semaphore latch与barrier latch barrier 总结 前言 前面四部分内容已经把目前常用的C++标准库中线程库的一些同步库介绍完 ...
- Apache Hudi核心概念一网打尽
1. 场景 https://hudi.apache.org/docs/use_cases.html 近实时写入 减少碎片化工具的使用 CDC 增量导入 RDBMS 数据 限制小文件的大小和数量 近实时 ...
- 浏览ASP.NET网页(6)
当我们搭建好了IIS后,就不需要开发工具进行编译打开网站啦,我们可以在IIS下进行预览,如图所示: 需要注意的是,网页的后缀名是.aspx,不是.cs
- All in All UVA - 10340
You have devised a new encryption technique which encodes a message by inserting between its charac ...
- Day01_10_Scanner 接收用户输入
Scanner函数 import java.util.Scanner; class ScannerTest { public static void main(String[] args){ Syst ...
- Day07_35_Colection下的方法
Collection 下的方法 * **Collection 集合的方法应用** ``` package com.shige.Collection; import java.util.ArrayLis ...
- 1019 General Palindromic Number
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- ListBox控件的另一种数据绑定方式
把DataTemplate防止ListBox中的绑定 <ListBox x:Name="ListBoxName"> <ListBox.ItemTemplate&g ...