n!素因子p的幂 swjtuOJ 2090【数论】
原文地址:http://blog.csdn.net/u012717411/article/details/47334969(感谢作者)
素因子分解写的非常好!
数论一道好题:给以两个大整数n,s(n<=10^18,s<=10^12),试找到最大的整数k使得n! % s^k ==0
- (1)首先对S进行素因子分解,复杂度O(logN),用map存储,得到所有素因子以及素因子的幂
- (2)对于每一个素因子p,计算对应的n!中素因子p的幂(复杂度O(logn)),两者相除取所有p幂的最小值就是对应的最大整数k,总的时间复杂度为O(logs·logn)
❤求n!素因子p的幂要用累除法呀( ⊙ o ⊙ )!
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
const int _max=1e3+;
ll n,s,t;
map<ll,int> mp;
map<ll,int>::iterator it; void divide(ll n)
{
mp.clear();
t=;
for(ll i=;i*i<=n;i++){
if(n%i==){
mp[i]++;
n/=i;
while(n%i==){
mp[i]++;
n/=i;
}
}
}
if(n!=) mp[n]++;
} ll judge(ll p){
ll cnt=;
ll now=n;
while(now){
cnt+=now/p;
now/=p;
}
return cnt;
} ll solve()
{
ll ans= 9223372036854775807ll;
for(it=mp.begin();it!=mp.end();it++){
ans=min(judge(it->first)/it->second,ans);
}
return ans;
} int main()
{
int T;
cin>>T;
while(T--){
scanf("%lld%lld",&n,&s);
divide(s);
printf("%lld\n",solve());
}
return ;
}
n!素因子p的幂 swjtuOJ 2090【数论】的更多相关文章
- 2021.07.26 P1010 幂次方(数论)
2021.07.26 P1010 幂次方(数论) [P1010 NOIP1998 普及组] 幂次方 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.二进制 题意: 用20 ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- CF#538(div 2) C. Trailing Loves (or L'oeufs?) 【经典数论 n!的素因子分解】
任意门:http://codeforces.com/contest/1114/problem/C C. Trailing Loves (or L'oeufs?) time limit per test ...
- HDU 5833 Zhu and 772002 (数论+高斯消元)
题目链接 题意:给定n个数,这n个数的素因子值不超过2000,从中取任意个数使其乘积为完全平方数,问有多少种取法. 题解:开始用素筛枚举写了半天TLE了,后来队友说高斯消元才想起来,果断用模板.赛后又 ...
- 快速幂取模 分类: ACM TYPE 2014-08-29 22:01 95人阅读 评论(0) 收藏
#include<stdio.h> #include<stdlib.h> //快速幂算法,数论二分 long long powermod(int a,int b, int c) ...
- 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)
链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- Codeforces Round #319 (Div. 2) C Vasya and Petya's Game (数论)
因为所有整数都能被唯一分解,p1^a1*p2^a2*...*pi^ai,而一次询问的数可以分解为p1^a1k*p2^a2k*...*pi^aik,这次询问会把所有a1>=a1k &&am ...
- Make It One CodeForces - 1043F (数论,最短路,好题)
大意: 给定序列$a$, 求最小子集, 使得gcd为1. 对于数$x$, 素因子多少次幂是无关紧要的, 这样就可以用一个二进制数来表示. $x$取$gcd$后的二进制状态最多$2^7$, 可以暴力枚举 ...
- bzoj 3309 反演
$n=p_1^{a_1}p_2^{a_2}…p_k^{a_k},p_i$为素数,定义$f(n)=max(a_1,a_2…,a_k)$. 给定a,b<=1e7求$\sum\limits_{i=1} ...
随机推荐
- Spring Cloud Eureka集群配置及注意事项(Greenwich版本)
Spring Cloud Eureka集群配置及注意事项(Greenwich版本) 一·概述 Spring Cloud Netflix Eureka 是一个提供服务注册与发现的套件.服务提供者只需要将 ...
- 通过pyppeteer来爬取今日头条
import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await ...
- 轻松搞定 JS 的this、call和apply
年前最后一篇文章,提前祝大家春节快乐.对了,还有369就要2018年了,提前祝大家2018年春节快乐. .. .vr qBMBBBMBMY 8BBBBBOBMBMv iMBMM5vOY:BMBBv . ...
- 安装springsource-tool-suite插件成功之后找不到spring的处理办法
最近学习spring,安装springsource-tool-suite插件,成功之后,在help-installation details里面可以找到安装的spring插件,却在window-pre ...
- JasperReport导出报表8
我们已经看到在前面的章节中,如何打印和查看的JasperReport生成的文档.在这里,我们将看到如何在其他格式,如PDF,HTML和XLS转换或导出这些报告. Facade类net.sf.jaspe ...
- 解决C++ builder 4.0编译后的程序在某些计算机上运行出现"EAccessViolation" 的错误
1. bordbk41.dll is missing or not registered. regsvr32 "C:\Program Files (x86)\Common Files\Bor ...
- JAVA面试常见问题之数据库篇
1.MySQL 索引使用的注意事项 更新频繁的列不要加索引 数据量小的表不要加索引 重复数据多的字段不要加索引,比如性别字段 首先应该考虑对where 和 order by 涉及的列上建立索引 2.D ...
- C# Action 和Func
https://www.cnblogs.com/LipeiNet/p/4694225.html
- mysql向某个字段前边追加一个字符串CONCAT命令
比如,我在处理图片的时候把https写成了tps 那我就要补全 UPDATE t_article set imgs=CONCAT('ht',imgs);
- new 在C++ 中的用法
我对C++一无所知 看参考手册 来看一下参考手册,总共有三种用法 下面是网站上给出的例子 // operator new example #include <iostream> // st ...