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的个数(这可以通过树状数组求区间和得出),记录右边界即 ...
随机推荐
- spring datasource和mybatis的datasource来源在哪里
配置一个数据源 spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0.可以在Spring配置文件中利用这两者中任何一个配置数据源. 配置一个 ...
- HDU 3342 -- Legal or Not【裸拓扑排序 &&水题 && 邻接表实现】
Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- 使用UE4公布安卓平台游戏
使用了几天的UE4 ,总算是将游戏在安卓平台执行起来了.当中遇到非常多问题,而且终于依旧有一些问题没能解决. 整体感觉是UE4这款引擎眼下还不够成熟.问题较多. 没有unity使用起来方便. 可是既然 ...
- Python标准库:内置函数callable(object)
假设对象object參数是能够调用的对象,就返回True.否则返回False.只是要注意的是,当一个对象是能够调用的.并不表示调用该对象时运行一定成功,但不可调用的对象去调用时一定不会成功.假设类对象 ...
- ZooKeeper分布式集群部署及问题
ZooKeeper为分布式应用系统提供了高性能服务,在许多常见的集群服务中被广泛使用,最常见的当属HBase集群了,其他的还有Solr集群.Hadoop-2中的HA自己主动故障转移等. 本文主要介绍了 ...
- unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季
解说文件夹 塔防游戏0基础篇... 第一讲 游戏演示和资源介绍... 第二讲 游戏场景的完毕... 第三讲 预制体的制作... 第四讲 敌人的随机产生和按路径行走... 第五讲 塔防工具的产 ...
- HDU 5654 xiaoxin and his watermelon candy 离线树状数组
xiaoxin and his watermelon candy Problem Description During his six grade summer vacation, xiaoxin g ...
- Python笔记(四)
# -*- coding:utf-8 -*- # 控制语句 # if...else... print "********************1********************** ...
- POJ 3020 Hungary
一道建图题-- // by SiriusRen #include <cstdio> #include <cstring> using namespace std; #defin ...
- linux下通用Makefile写法
linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法. 假设现在有以下源文件:file1.h file1. ...