hdu-5525 Product(费马小定理)
题目来源:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=644&pid=1003

前面用奇偶性约掉2,后面处理前缀积和后缀积。
WA了很久的地方:在约掉2之前不能模(mod-1)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 100001;
LL Mod = 1000000007;
LL mod = Mod - 1;
char vis[N];
int prime[N];
vector<int> G[N];
int tot = 0;
void init_prime()
{
memset(vis, 0, sizeof(vis));
for(int i=2; i<N; i++)
{
if(!vis[i])
{
prime[++tot] = i;
for(int j=i; j<N; j+=i)
{
vis[j] = 1;
G[j].push_back(i);
}
}
}
}
LL quick(LL a, LL b)
{
LL c = 1;
while(b)
{
if(b&1)
c = c * a % Mod;
b >>= 1;
a = a * a % Mod;
}
return c;
}
int a[N];
LL num[N]; //素数i的个数
LL pre[N], suf[N];
int main()
{
init_prime();
int i, j, k, m, n;
while(scanf("%d", &n) == 1)
{
for(i=1; i<=n; i++)
scanf("%d", a+i);
memset(num, 0, sizeof(num));
for(i=1; i<=n; i++)
{
for(j=0; j<G[i].size(); j++)
{
int tp = 0, x = i;
while(x%G[i][j] == 0)
{
tp ++;
x /= G[i][j];
}
num[G[i][j]] += a[i] * tp;
}
}
///处理(p1+1)*(p2+1)*...*(px+1)的前缀积和后缀积
pre[0] = 1;
for(int i=1; i<=tot; i++)
{
pre[i] = pre[i-1];
if(num[prime[i]])
pre[i] = pre[i] * (num[prime[i]] % mod +1) % mod;
}
suf[tot+1] = 1;
for(int i=tot; i>=1; i--)
{
suf[i] = suf[i+1];
if(num[prime[i]])
suf[i] = suf[i] * (num[prime[i]] % mod +1) % mod;
}
/*---------------------------------------------*/
LL ans = 1;
for(int i=1; i<=tot; i++)
{
LL tmp, p = num[prime[i]];
if(p & 1)
tmp = p % mod * (((p+1)>>1) % mod) % mod;
else
tmp = (p>>1) %mod * ((p+1) % mod) % mod;
ans = ans * quick(prime[i], tmp * pre[i-1] % mod * suf[i+1] % mod) % Mod;
}
printf("%I64d\n", ans);
}
return 0;
}
hdu-5525 Product(费马小定理)的更多相关文章
- hdu 4704 Sum 费马小定理
题目链接 求2^n%mod的值, n<=10^100000. 费马小定理 如果a, p 互质, 那么a^(p-1) = 1(mod p) 然后可以推出来a^k % p = a^(k%(p-1) ...
- HDU - 6440(费马小定理)
链接:HDU - 6440 题意:重新定义加法和乘法,使得 (m+n)^p = m^p + n^p 成立,p是素数.,且satisfied that there exists an integer q ...
- 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
Sum Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...
- HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description Sample Input 2 Sample Outp ...
- hdu 4704(费马小定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704 思路:一道整数划分题目,不难推出公式:2^(n-1),根据费马小定理:(2,MOD)互质,则2^ ...
- HDU 5667 Sequence【矩阵快速幂+费马小定理】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5667 题意: Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写数学题.他找到 ...
- hdu 4704 Sum(组合,费马小定理,快速幂)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4704: 这个题很刁是不是,一点都不6,为什么数据范围要开这么大,把我吓哭了,我kao......说笑的, ...
- hdu 4549 M斐波那契数列(快速幂 矩阵快速幂 费马小定理)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4549: 题目是中文的很容易理解吧.可一开始我把题目看错了,这毛病哈哈. 一开始我看错题时,就用了一个快速 ...
- hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)
题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3. ...
- HDU 5667 Sequence 矩阵快速幂+费马小定理
题目不难懂.式子是一个递推式,并且不难发现f[n]都是a的整数次幂.(f[1]=a0;f[2]=ab;f[3]=ab*f[2]c*f[1]...) 我们先只看指数部分,设h[n]. 则 h[1]=0; ...
随机推荐
- unrar.dll 使用实例
/* * main.cpp * * Created on: Aug 17, 2015 * Author: smallcroco * * Discription: * 1 首先打开解压包,可以设置打开方 ...
- Microsoft Visual Studio 2015激活密匙
企业版:http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs ...
- jquery网页换肤+jquery的cookie+动态调用css样式文件,可以的
比较具有参考性,代码全贴(当然,还需要一张图片需要的留个邮箱,看到就发) 贴在这儿吧,修改一下css的引用位置应该可以用 <%@ page language="java" c ...
- WPF中Popup的几个问题
要用popup控件来解决一些问题.就此带来了一批问题. 问题一. 在popup外任意位置点击时要能关闭popup,这个本来简单,只要加上StaysOpen=false就可以了.但我的popup中有个O ...
- bootstraptable插件文档的坑
1.事件onCheck中文档参数为row, $element正确的顺序为$element,row eg: $Table.on('check.bs.table', function ($element, ...
- python中函数接收多余参数
代码: def fun(x): return x print fun(10) 函数fun(x)接受参数是x,传入数字"10",打印函数的返回值结果 就是10,如果我传递多个参数时, ...
- Samsung S4卡屏卡在开机画面的不拆机恢复照片一例
大家好!欢迎再次来到我Dr.wonder的世界, 今天我给你们带来Samsung S4 I9508 卡屏开在开机画面的恢复!非常de经典. 首先看图 他开机一直卡在这里, 然后 ,我们使用专业仪器,在 ...
- cmd常用命令符
想成为电脑高手必须掌握的八个cmd 命令 http://www.cr173.com/html/3917_1.html ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值 ...
- 基于layerpage 前后端异步分页
#下载jquery 和 layerpage1.核心分页方法 laypage({ cont: 'page1', //容器.值支持id名.原生dom对象,jquery对象. pages: json.tot ...
- HTML初步入门
标签元素 标签介绍 html元素包括一个或一对标签定义的包含范围.而标签就是由两个字符串"<"和">"号组成,标签包括开始标签"<& ...