HDU 4335 Contest 4
利用降幂公式。。呃,还是自己去搜题解吧。知道降幂公式后,就不难了。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define LL unsigned long long
using namespace std; bool mod[100005]; LL PHI(LL P){
LL ret=1;
for(LL i=2;i*i<=P;i++)
if(P%i==0){
ret*=i-1;
P/=i;
while(P%i==0){
P/=i;
ret*=i;
}
}
if(P>1)
ret*=P-1;
return ret;
} LL quick(LL a,LL k,LL m){
LL ret=1; LL t=a%m;
while(k){
if(k&1) ret=(ret*t)%m;
k>>=1;
t=(t*t)%m;
}
return ret;
} int main(){
int T;
LL b,P,M;
scanf("%d",&T);
for(int kase=1;kase<=T;kase++){
scanf("%I64u%I64u%I64u",&b,&P,&M);
printf("Case #%d: ",kase);
if(P==1){
if(M==18446744073709551615ULL)
printf("18446744073709551616\n");
else
printf("%I64u\n",M+1);
continue;
}
LL phi=PHI(P);
LL i,ans;
LL fac=1; ans=0;
for(i=0;i<=M&&fac<=phi;i++){
if(quick(i,fac,P)==b){
ans++;
}
fac*=(i+1);
}
fac%=phi;
for(;i<=M&&fac;i++){
if(quick(i,fac,P)==b)
ans++;
fac=(fac*(i+1))%phi;
}
if(i<=M){
memset(mod,false,sizeof(mod));
LL cn=0;
for(LL k=0;k<P;k++){
if(quick(i+k,phi,P)==b){
mod[k]=true;
cn++;
}
}
ans+=((M-i+1)/P)*cn;
LL e=(M-i+1)%P;
for(LL k=0;k<e;k++)
if(mod[k])
ans++;
}
printf("%I64u\n",ans);
}
return 0;
}
HDU 4335 Contest 4的更多相关文章
- 数论 + 公式 - HDU 4335 What is N?
What is N? Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4335 Mean: 给你三个数b.P.M,让你求有多少个n满 ...
- HDU 5045 Contest(状压DP)
Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...
- hdu - 5045 - Contest(国家压缩dp)
意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...
- [ACM] hdu 5045 Contest (减少国家Dp)
Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...
- HDU–5988-Coding Contest(最小费用最大流变形)
Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- hdu 4335 What is N?
此题用到的公式:a^b%c=a^(b%phi(c)+phi(c))%c (b>=phi(c)). 1.当n!<phi(p)时,直接暴力掉: 2.当n!>=phi(p) &&a ...
- hdu 5045 Contest(状态压缩DP)
题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...
- HDU 5045 Contest
pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...
- HDU 4339 Contest 4
树状数组,主要是抓住要求连续1的个数.这样,初始时,相同的加1,不同的加0. 查询时,用二分搜索右边界.就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即 ...
随机推荐
- iOS库--.a与.framework
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的差别? 静态库:链接时完整地拷贝至可运行文件里.被多次使用就有多份冗余拷贝. 动态库:链接时不复制.程序执行时由系 ...
- JavaScript 获取小数任一小数点后的位数的小数
用Javascript取float型小数点后两位,例22.127456取成22.13,怎样做? 1.这样的方法最不推荐: function get(){ var s = 22.127456 + &qu ...
- python2.7编码与解码
常见的编码 ASCII: 美国人发明的,只编码英文字母和符号,1个字节. GB2312: 中国人发明的,增加了中文汉字和符号,2个字节. Unicode: 为了把所有语言都统一到一套编码里,一般是2个 ...
- 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)
在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...
- linux网络启动报错
报错信息: shutting down interface eth0: error:device "eth0" (/org/freedsktop/networkMaager/Dev ...
- 使用rsync同步数据(by quqi99)
作者:张华 发表于:2015-12-28版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 急需使 ...
- unity3d教程运行物理机制
首先,我们将把Hooke定律写Euler方法结合在一起找到新坐标.加速和速度. Hooke定律是F=kx,这里的F是指由水流产生的力(记住,我们将把水体表面模拟为水流),k是指水流的常量.x则是位移. ...
- unity坐标转换问题
unity最经常使用的几种坐标.屏幕坐标.世界坐标.ngui坐标,相对于父物体的坐标(localPoisition). 可是有时候这几种坐标相互转换何其困难,让自己狠抓头. 不得不操作的方式是创建虚拟 ...
- 英语发音规则---D字母
英语发音规则---D字母 一.总结 一句话总结: 1.D发[d]音? doctor ['dɒktə] n. 医生:博士 bread [bred] n. 面包:生计 hand [hænd] n. 手,手 ...
- notepad++ 插件推荐——快速定位文件
介绍Notepad++的文章很多,我这里就不赘述了.简言之,是一个轻便的文本编辑工具.结合丰富的插件,可以实现很多功能,可以成为一个轻量级的IDE,用来做脚本开发非常合适. 这里介绍几个插件可以用来进 ...