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. ...
随机推荐
- 总结:Bias(偏差),Error(误差),Variance(方差)及CV(交叉验证)
犀利的开头 在机器学习中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模 ...
- 允许Traceroute探测
允许Traceroute探测 漏洞描述: 允许Traceroute探测 漏洞描述 本插件使用Traceroute探测来获取扫描器与远程主机之间的路由信息.攻击者也可以利用这些信息来了解目标网络的网络拓 ...
- shell脚本--部署应用到tomcat并启动tomcat
#!/bin/sh #----------------------------------------------------------------------------- #备份 #------ ...
- [LeetCode] 17. Letter Combinations of a Phone Number ☆☆
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- [POI2009]WIE-Hexer
https://www.luogu.org/problem/show?pid=3489 题目描述 Byteasar has become a hexer - a conqueror of monste ...
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 ——中位数排序
Description 经过多年的积蓄,农夫JOHN决定造一个新的牛舍.他知道所有N(2 <= N <= 10,000)头牛的吃草位置,所以他想把牛舍造在最方便的地方. 每一头牛吃草的位置 ...
- 20155335俞昆《java程序设计》第十周总结
学号 2016-2017-2 <Java程序设计>第十周学习总结 ## 事实上网络编程,我们可以简单的理解为两台计算机相互通讯数据而已,对于程序员而言,掌握一种编程接口并使用一种编程模型相 ...
- HTML/CSS/JS编码规范
最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签 ...
- FindQQByProcess
看网上有许多通过进程寻找QQ号的例子,看了一下,里面涉及的知识点还是比较多,但网上的兼容性不太好,而且没有给出匹配字符的来源,所以自己动手写了一下,顺便给出一些我调试的结果. #include &qu ...
- Django 1.10中文文档-第一个应用Part5-测试
本教程上接教程Part4. 前面已经建立一个网页投票应用,现在将为它创建一些自动化测试. 自动化测试简介 什么是自动化测试 测试是检查你的代码是否正常运行的行为.测试也分为不同的级别.有些测试可能是用 ...