hdu5728
详细题解:
http://blog.csdn.net/wust_zzwh/article/details/51966450
……化简公式的能力还不够啊……
#include<bits/stdc++.h> using namespace std;
typedef long long ll;
const int mo=1e9+;
const int mx=1e7;
bool v[mx+];
int pr[mx+],phi[mx+],s[mx+],a[],r,n,m,t,p; void resolve(int n)
{
r=;
for (int i=; i<=t; i++)
if (n%pr[i]==) {a[++r]=pr[i]; n/=pr[i];}
else if (n<pr[i]) break;
} int quick(ll x,ll y,int p)
{
ll s=;
while (y)
{
if (y&) s=s*x%p;
x=x*x%p;
y>>=;
}
return (s==)?p:s;
} ll f(int i,int n,int m)
{
if (n==) return s[m];
if (m==) return ;
return (1ll*(a[i]-)*f(i+,n/a[i],m)%mo+f(i,n,m/a[i]))%mo;
} int ans(int k,int p)
{
if (p==) return ;
return quick(k,ans(k,phi[p]),p);
} int main()
{
phi[]=;
for (int i=; i<=mx; i++)
{
if (!v[i])
{
pr[++t]=i;
v[i]=;
phi[i]=i-;
}
for (int j=; j<=t; j++)
{
if (i*pr[j]>mx) break;
v[i*pr[j]]=;
if (i%pr[j]) phi[i*pr[j]]=phi[i]*(pr[j]-);
else {
phi[i*pr[j]]=phi[i]*pr[j];
break;
}
}
}
for (int i=; i<=mx; i++) s[i]=(s[i-]+phi[i])%mo;
while (scanf("%d%d%d",&n,&m,&p)!=EOF)
{
if (p==) {puts(""); continue;}
resolve(n);
ll k=f(,n,m);
printf("%d\n",ans(k,p)%p);
}
}
hdu5728的更多相关文章
- hdu-5728 PowMod(数论)
题目链接: PowMod Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- 2016 Multi-University Training Contest 1
8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...
随机推荐
- python升级引发的问题总结
http://www.cnblogs.com/ajianbeyourself/p/4214398.html http://www.cnblogs.com/hanggegege/p/6993003.ht ...
- CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...
- UVA 1213 Sum of Different Primes
https://vjudge.net/problem/UVA-1213 dp[i][j][k] 前i个质数里选j个和为k的方案数 枚举第i个选不选转移 #include<cstdio> # ...
- UVA129 暴力dfs,有许多值得学习的代码
紫书195 题目大意:给一个困难的串,困难的串的定义就是里面没有重复的串. 思路:不需要重新对之前的串进行判重,只需要对当前的加入的字符进行改变即可. 因为是判断字典序第k个的字符串,所以要多一个全局 ...
- 图论:最短路-Bellman-Ford
我们之前介绍了一种,(最常用的)SPFA算法,SPFA算法是对Bellman-Ford算法的队列优化,用队列替代了Bellman-Ford中的循环检查部分 然后这里我们介绍Bellman-Ford算法 ...
- Cycle Sort
Cycle sort的思想与计数排序太像了,理解了基数排序再看这个会有很大的帮助, 圈排序与计数排序的区别在于圈排序只给那些需要计数的数字计数,先看完文章吧,看完再回来理解这一句话 所谓的圈的定义,我 ...
- 51nod 1190 最小公倍数之和 V2
给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b). 例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30 ...
- 洛谷金秋夏令营模拟赛 第2场 T11738 伪神
调了一个下午只有八十分QAQ md弃了不管了 对拍也没拍出来 鬼知道是什么数据把我卡了QAQ 没事我只是个SB而已 这题其实还是蛮正常的 做法其实很简单 根据链剖的构造方法 你每次修改都是一段又一段的 ...
- 【Atcoder】CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
[题意]给定只含小写字母的字符串,要求分割成若干段使段内字母重组顺序后能得到回文串,求最少分割段数.n<=2*10^5 [算法]DP [题解]关键在于快速判断一个字符子串是否合法,容易发现合法仅 ...
- 【51NOD-0】1134 最长递增子序列
[算法]动态规划 [题解]经典模型:最长上升子序列(n log n) #include<cstdio> #include<algorithm> #include<cstr ...