详细题解:

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的更多相关文章

  1. hdu-5728 PowMod(数论)

    题目链接: PowMod Time Limit: 3000/1500 MS (Java/Others)     Memory Limit: 262144/262144 K (Java/Others) ...

  2. 2016 Multi-University Training Contest 1

    8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...

随机推荐

  1. Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例

    1.业务需求 在拥有手机号在每个基站处停留时间日志 和 基站信息的 算出某个手机号的(所在基站,停留时间),(当前所在经度,当前所在纬度) 其中手机连接基站产生的日志信息类似如下: 186888888 ...

  2. 解决 cmd dos 下 无法显示中文

    在做程序开发的时候经常需要在使用命令行进行操作, dos环境本身是不支持中文的,有时候中文编码的问题就像苍蝇一样讨厌,下面提供几种常用的手段解决win7环境下中文显示乱码的问题: 方法一: 修改注册表 ...

  3. NYOJ 832 DP

    合并游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 大家都知道Yougth除了热爱编程之外,他还有一个爱好就是喜欢玩. 某天在河边玩耍的时候,他发现了一种神奇的 ...

  4. HDU4027 线段树

    Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65768/65768 K ...

  5. UBOOT启动内核过程

    1.摘要 (1).启动4步骤第一步:将内核搬移到DDR中第二步:校验内核格式.CRC等第三步:准备传参第四步:跳转执行内核(2).涉及到的主要函数是:do_bootm和do_bootm_linux(3 ...

  6. 你还在用notifyDataSetChanged?

    想到发这篇帖子是源于我的上一篇帖子#Testin杯#多线程断点续传后台下载 .帖子中讲述的项目使用了listView这个控件,而且自定义了adapter.在更新item的进度条时发现每次使用notif ...

  7. javascript实现正整数分数约分

    //m,n为正整数的分子和分母 function reductionTo(m, n) { var arr = []; if (!isInteger(m) || !isInteger(n)) { con ...

  8. 剑指offer --合并链表

    题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解法://递归解法 public class MixLink { /* public class L ...

  9. Spring 学习笔记之整合Hibernate

    Spring和Hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心SQ ...

  10. LightOJ 1137 - Expanding Rods 基础计算几何

    http://www.lightoj.com/volume_showproblem.php?problem=1137 题意:一根长度为L的杆热膨胀为L',左端点到右端点间距离不变,且膨胀后的杆的弧为圆 ...