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. ...
随机推荐
- sublime Text 块编辑方法
比如我们要把SQL语句中的多表查询结果封装成pojo SQL: SELECT a.id, a.title, a.sell_point, a.price, a.image, b.`name` categ ...
- Codeforces Round #530 (Div. 2):D. Sum in the tree (题解)
D. Sum in the tree 题目链接:https://codeforces.com/contest/1099/problem/D 题意: 给出一棵树,以及每个点的si,这里的si代表从i号结 ...
- 2017 济南综合班 Day 6
循环移动 (cyclic.cpp/c/pas) (1s/256M) 问题描述 给出一个字符串S与N个操作.每个操作用三元组(L, R, K)进行描述:操作将字符串第L个到第R个位置构成的子串循环移动K ...
- HDU2031 进制转换
#include <iostream> #include "string" #include "cstdio" #include "cst ...
- IIS 搭建
1. 在打开程序功能里面,点击IIS安装.注意要选择适当的各种有用的服务.例如默认文档就需要安装非IIS下面的选项. 2. IIS部署网站可以参考网上的步骤.会遇到500处理程序“Extensionl ...
- 【bzo1579】拆点+dijkstra优先队列优化+其他优化
题意: n个点,m条边,问从1走到n的最短路,其中有K次机会可以让一条路的权值变成0.1≤N≤10000;1≤M≤500000;1≤K≤20 题解: 拆点,一个点拆成K个,分别表示到了这个点时还有多少 ...
- Fermat2018游记
day (-22) 2018年2月5日 Devin大佬给我发了一份Waterloo AIF的原件截图,发现里面居然直接问你的Fermat分数,那么这么重要的考试当然不能错过啊 若干天之后刚开学不久的一 ...
- HTML跳转新窗口的方法
笔试遇到这样的一个问题,特意整理一下. 方法一 纯HTML <a href="http://www.cnblogs.com" target="_blank" ...
- 一些达成共识的JavaScript编码风格约定【转】
如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...
- 中南oj String and Arrays
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?cid=2072&pid=1 Problem B: String and Arrays T ...