HDU 3988 Harry Potter and the Hide Story(数论-整数和素数)
Harry Potter and the Hide Story

Each test case contains two integers, N and K.
Technical Specification
1. 1 <= T <= 500
2. 1 <= K <= 1 000 000 000 000 00
3. 1 <= N <= 1 000 000 000 000 000 000
2
2 2
10 10
Case 1: 1
Case 2: 2
pid=3983" target="_blank" style="color:rgb(26,92,200); text-decoration:none">3983
pid=3984" target="_blank" style="color:rgb(26,92,200); text-decoration:none">3984
3985题目大意:
给定 n和k , 求 n! % k^i 等于0时,i 的最大取值是多少?
解题思路:
将 k分解质因素。n也依据k的质因素求出关系限制i,最后算出最大的i就可以。
解题代码:
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
#include <cstring>
using namespace std; typedef unsigned long long ll;
ll n,k; const int maxn=10000010;
bool isPrime[maxn];
vector <ll> v;
ll tol; void get_prime(){
tol=0;
memset(isPrime,true,sizeof(isPrime));
for(ll i=2;i<maxn;i++){
if(isPrime[i]){
tol++;
v.push_back(i);
}
for(ll j=0;j<tol && i*v[j]<maxn;j++){
isPrime[i*v[j]]=false;
if(i%v[j]==0) break;
}
}
//for(ll i=v.size()-1;i>=v.size()-100;i--) cout<<v[i]<<endl;
} map <ll,ll> getPrime(ll x){
map <ll,ll> mp;
for(ll i=0;i<tol && x>=v[i];i++){
while(x>0 && x%v[i]==0){
x/=v[i];
mp[v[i]]++;
}
}
if(x>1) mp[x]++;
return mp;
} void solve(){
if(k==1){
printf("inf\n");
return;
}
map <ll,ll> mp=getPrime(k);
ll ans=1e19;
for(map <ll,ll>::iterator it=mp.begin();it!=mp.end();it++){
ll tmp=n,sum=0;
while(tmp>0){
sum+=tmp/(it->first);
tmp/=(it->first);
}
if(sum/(it->second)<ans) ans=sum/(it->second);
}
cout<<ans<<endl;
} int main(){
get_prime();
int t;
scanf("%d",&t);
for(int i=0;i<t;i++){
cin>>n>>k;
printf("Case %d: ",i+1);
solve();
}
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
HDU 3988 Harry Potter and the Hide Story(数论-整数和素数)的更多相关文章
- HDU3988-Harry Potter and the Hide Story(数论-质因数分解)
Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 ...
- Harry Potter and the Hide Story(hdu3988)
Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 ...
- HDU 3987 Harry Potter and the Forbidden Forest(边权放大法+最小割)
Harry Potter and the Forbidden Forest Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/ ...
- hdu 3986 Harry Potter and the Final Battle (最短路径)
Harry Potter and the Final Battle Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/6553 ...
- hdu 3987 Harry Potter and the Forbidden Forest 求割边最少的最小割
view code//hdu 3987 #include <iostream> #include <cstdio> #include <algorithm> #in ...
- 【Dijstra堆优化】HDU 3986 Harry Potter and the Final Battle
http://acm.hdu.edu.cn/showproblem.php?pid=3986 [题意] 给定一个有重边的无向图,T=20,n<=1000,m<=5000 删去一条边,使得1 ...
- hdu 3986 Harry Potter and the Final Battle
一个水题WA了60发,数组没开大,这OJ也不提示RE,光提示WA...... 思路:先求出最短路,如果删除的边不是最短路上的,那么对结果没有影响,要有影响,只能删除最短路上的边.所以枚举一下最短路上的 ...
- HDU Stealing Harry Potter's Precious(状压BFS)
状压BFS 注意在用二维字符数组时,要把空格.换行处理好. #include<stdio.h> #include<algorithm> #include<string.h ...
- hdu 3982 Harry Potter and J.K.Rowling (半平面交 + 圆与多边形交)
Problem - 3982 题意就是给出一个圆心在原点半径为R的圆形蛋糕,上面有一个cherry,对蛋糕切若干刀,最后要求求出有cherry的那块的面积占整个蛋糕的多少. 做法显而易见,就是一个半平 ...
随机推荐
- c++ 如何获取系统时间 - zjnig711的信息仓库 - 博客频道 - CSDN.NET
c++ 如何获取系统时间 - zjnig711的信息仓库 - 博客频道 - CSDN.NET c++ 如何获取系统时间 分类: C/C++ 2008-05-08 22:15 14115人阅读 评论(5 ...
- sd nfrmtl
http://www.zhihu.com/collection/24337307 http://www.zhihu.com/collection/24337259 http://www.zhihu.c ...
- 华为C8816电信版ROOT过程
华为C8816电信版ROOT方法, 网上的方法都不太靠谱.. 昨天弄了好久, 最终搞定.. 整理了一下.. 实用到的就方便多了. <方法不再啰嗦, 都有说明> 1. 获取手机解锁passw ...
- ZTESoft 持续集成 编年史 之 持续集成建设---自主研发(总括)
最终选择了自主研发,考虑到我们团队对java以及flex知识的储备,展示层使用夸浏览器的flex开发,后端业务层使用java. 一.方案: BEC + ZCIPAgent + ZCIPServer + ...
- 2)JS动态生成HTML元素的爬取
2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.W ...
- SWT入门-常用组件的使用(转)
转自:http://www.cnblogs.com/kentyshang/archive/2007/08/16/858367.html swt的常用组件button ,text ,combo,list ...
- linux提取锁和信号灯经常使用
1.信号( 这两个过程之间的同步) struct semaphore power_sem; sema_init(&pdata->power_sem,1); down(&pdata ...
- POJ 36666 Making the Grade 简单DP
题意是: 给出n个数,让你用最小的花费将其改成非递增或非递减的 然后花费就是新序列与原序列各个位置的数的差的绝对值的和 然后可以看到有2000个数,数的范围是10亿 仔细观察可以想象到.其实改变序列中 ...
- 域名注册查询接口(API)的说明
1.域名查询 接口采用HTTP,POST,GET协议: 调用URL:http://panda.www.net.cn/cgi-bin/check.cgi 参数名称:area_domain 值为标准域名, ...
- friend keyword 对于模板 并不只不过友元!!!
friend是C++中封装的漏网之鱼. C++中的friend同意其它的类或者是函数訪问本类的不论什么成员.甚至是private成员,仅仅要该类声明其为友元. 但是,在有些情况下,并非同意外界訪问类的 ...