LOJ #6303. 水题 (约数 质因数)
#6303. 水题
内存限制 10 MiB 时间限制:1000 ms 标准输入输出
题目描述
给定正整数 n,kn, kn,k,已知非负整数 xxx 满足 n!modkx=0,求 xmaxx_{max}xmax 。
输入格式
本题包含多组数据,请处理至文件末尾。
对于每组数据,共有一行,两个整数,表示 n,kn, kn,k。
输出格式
对于每组数据,输出一行,一个整数,表示 xmaxx_{max}xmax。
样例
输入样例
10 2
5000000000000000000 2
5000000000000000000 10000000000000
输出样例
8
4999999999999999981
96153846153846153
数据范围与提示
对于 40%40\%40% 的数据,k⩽2×107k \leqslant 2\times 10^7k⩽2×107,n⩽2×109n \leqslant 2\times 10^9n⩽2×109,数据组数 ⩽50 \leqslant 50⩽50。
对于 100%100\%100% 的数据,1<k⩽10131<k \leqslant 10^{13}1<k⩽1013,1⩽n⩽5×10181 \leqslant n \leqslant 5\times 10^{18}1⩽n⩽5×1018,数据组数 ⩽200\leqslant 200⩽200。
解题思路:
由n!%kx=0可得:k^x必定是n!的一个约数,所以k中的质因数在$n!$肯定都存在,只是k中质因子的指数小于等于n!中的质因子的指数。
假如我们现在已经知道了k的每个质因数及其指数:P1C1 P2C2... PmCm
我们还知道n!的每个质因子及其指数:P1D1P2D2 ...PmDm
那么可以得到:
$C1*X_1<=D1$ $C_2*X_2<=D_2$ ... $C_m*X_m<=D_m$
可以知道$$min{ X_1 X_2 ...X_m }$$便是满足条件的最大的X。
现在将问题转换为求K和n!的质因数及其指数了。
对于K的质因数和指数我们可以在$\sqrt{k}$的时间内求得,
而n!可以在$\log{n}*\sqrt{k}$的时间内得到。
#include<bits/stdc++.h>
using namespace std;
#define uint unsigned int
#define re register int
#define ll long long
#define INF 0x3f3f3f3f
#define maxn 5000009
#define maxm
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ll)(ch-'');ch=getchar();}
return x*f;
}
bool v[maxn];
ll prime[maxn];
ll n,m,k,ans,tot,cnt; void Prime()
{
for(int i=;i<=;i++)
{
if(!v[i])
prime[++cnt]=i;
for(int j=;j<=cnt&&i*prime[j]<=;j++)
{
v[i*prime[j]]=;
if(i%prime[j]==)
break;
}
}
}
ll Cal(ll x,ll y)
{
if(x<y)
return ;
return Cal(x/y,y)+x/y;
}
int main()
{
freopen("math.in","r",stdin);
freopen("math.out","w",stdout);
Prime();
while(scanf("%lld%lld",&n,&k)!=EOF)
{
ll ans=9e18;
for(int i=;prime[i]*prime[i]<=k;i++)
{
if(k%prime[i]==)
{
cnt=;
while(k%prime[i]==)
++cnt,k/=prime[i];
ans=min(ans,Cal(n,prime[i])/cnt);
}
}
if(k!=)
ans=min(ans,Cal(n,k));
printf("%lld\n",ans);
}
fclose(stdin);
fclose(stdout);
return ;
}
LOJ #6303. 水题 (约数 质因数)的更多相关文章
- Atcoder 水题选做
为什么是水题选做呢?因为我只会水题啊 ( 为什么是$Atcoder$呢?因为暑假学长来讲课的时候讲了三件事:不要用洛谷,不要用dev-c++,不要用单步调试.$bzoj$太难了,$Topcoder$整 ...
- 一道cf水题再加两道紫薯题的感悟
. 遇到一个很大的数除以另一个数时,可以尝试把这个很大的数进行,素数因子分解. . 遇到多个数的乘积与另一个数的除法时,求是否能整除,可以先求每一个数与分母的最大公约数,最后若分母数字为1,则证明可整 ...
- 每日一刷(2018多校水题+2016icpc水题)
11.9 线段树 http://acm.hdu.edu.cn/showproblem.php?pid=6315 求逆序对个数 http://acm.hdu.edu.cn/showproblem.php ...
- #82. 【UR #7】水题生成器
链接:http://uoj.ac/problem/82 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 —— 水题生成器. 每道题目都有一个正整数的难度值.水题生成器虽然强大但是 ...
- 【UOJ#82】【UR #7】水题生成器(贪心)
[UOJ#82][UR #7]水题生成器(贪心) 题面 UOJ 题解 把\(n!\)的所有约数搜出来,这个个数不会很多. 然后从大往小能选则选就好了. #include<iostream> ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- ACM :漫漫上学路 -DP -水题
CSU 1772 漫漫上学路 Time Limit: 1000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)
1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 112[ ...
- [poj2247] Humble Numbers (DP水题)
DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...
随机推荐
- echarts地图详解
$(function() { // 路径配置 require.config({ paths : { // echarts: 'http://echarts.baidu.com/build/dist' ...
- JS输入框统计文字数量
$('#articleTitle').bind('input propertychange',function () { var a = $(this).val().length; if(a>3 ...
- HBase读写的几种方式(一)java篇
1.HBase读写的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一种 ...
- [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.2 应力张量
1. 在有粘性的情形, 外界流体对 $\Omega$ 的作用力, 不仅有表面上的压力 (正压力), 也有表面上的内摩擦力 (切应力). 2. 于 $M$ 处以 ${\bf n}$ 为法向的单位面积 ...
- Django REST Framework API Guide 07
本节大纲 1.Permissions 2.Throttling Permissions 权限是用来授权或者拒绝用户访问API的不同部分的不同的类的.基础的权限划分 1.IsAuthenticated ...
- CapsNet胶囊网络(理解)
0 - 背景 Geoffrey Hinton是深度学习的开创者之一,反向传播等神经网络经典算法发明人,他在去年年底和他的团队发表了两篇论文,介绍了一种全新的神经网络,这种网络基于一种称为胶囊(caps ...
- JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋. 一. 技术 ...
- nginx日志的监控【转】
第一:nginx的基础监控: 1.进程监控 2.端口监控 在这里nginx的基础监控就不详细说了,注意的是:这两个是必须要加的.并且对于zabbix而言的话,一定要加上触发器的.有问题必须报警. 第二 ...
- ASP .NET Core HTTP Error 502.5 – Process Failure
页面返回错误 事件日志显示错误 大家可以先看着个链接 https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetco ...
- Java——super 与 this 关键字
super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类. this关键字:指向自己的引用. package ti; public ...