题目链接 Multipliers

题意很明确。

很显然答案可以表示成X ^ EXP % MOD

首先我们令N为输入的n个数的乘积。并且设N = (P1 ^ C1) * (P2 ^ C2) * ... * (Pk * Ck),Pi(1 <= i <= k)为质数。

1、N为完全平方数。

这个时候X = N的算术平方根,EXP = (C1 +1) * (C2 + 1) * ... * (Ck + 1), MOD = 1e9 + 7;

2、N不是完全平方数。

这个时候X = N, EXP = (C1 +1) * (C2 + 1) * ... * (Ck + 1) / 2, MOD = 1e9 + 7;

考虑到EXP可能非常大,这里我用了指数循环节公式:

 a^b%c = a^( b%phic+phic )%c phix为欧拉函数。

而在题中c等于1e9 + 7为质数,那么phic = 1e9 + 6。

剩下的事情就很简单了。

 #include <bits/stdc++.h>

 using namespace std;

 #define rep(i, a, b)  for(int i(a); i <= (b); ++i)
#define LL long long const int N = ;
const LL mod = ; int prime[N];
int c[N], d[N];
bool fl;
int cnt = ;
int n, x;
int squ; map <int, int> mp; inline LL Pow(LL a, LL b, LL Mod){
LL ret();
for (; b; b >>= , (a *= a) %= Mod)
if (b & ) (ret *= a) %= Mod;
return ret;
} int main(){ rep(i, , ){
fl = true;
rep(j, , (int)sqrt(i + 0.5)) if (i % j == ){
fl = false;
break;
}
if (fl){
prime[++cnt] = i;
mp[prime[cnt]] = cnt;
}
} memset(c, , sizeof c); scanf("%d", &n);
rep(i, , n){
scanf("%d", &x);
++c[mp[x]];
} squ = ;
rep(i, , cnt)
if (c[i]){
if (c[i] & ){
squ = ;
break;
}
} LL exp = ;
if (squ){
LL ret = ;
rep(i, , cnt) d[i] = c[i] / ;
rep(i, , cnt) ++c[i];
rep(i, , cnt) (exp *= c[i]) %= (mod - ); rep(i, , cnt) if (d[i]) (ret *= Pow(prime[i], d[i], mod)) %= mod; printf("%lld\n", Pow(ret, exp + mod - , mod));
} else
{
rep(i, , cnt) d[i] = c[i] + ;
rep(i, , cnt) if (d[i] % == ){
d[i] >>= ;
break;
} LL exp = ;
rep(i, , cnt) (exp *= d[i]) %= (mod - );
LL ret = ;
rep(i, , cnt) if (c[i]) (ret *= Pow(prime[i], c[i], mod)) %= mod; printf("%lld\n", Pow(ret, exp + mod - , mod));
} return ; }

Codeforces 615D Multipliers (数论)的更多相关文章

  1. CodeForces - 615D Multipliers(数论)

    http://codeforces.com/problemset/problem/615/D 题意 给出m个质因子,组成一个数n.问n的约数的乘积是多少,输出mod 1e+7的结果. 分析 从输入我们 ...

  2. codeforces 615D - Multipliers

    Multipliers 题意:给定一个2e5范围内的整数m,之后输入m个2e5内的素数(当然可以重复了),问把这些输入的素数全部乘起来所得的数的约数的乘积mod(1e9+7)等于多少? 思路:对题目样 ...

  3. Codeforces Round #338 (Div. 2) D. Multipliers 数论

    D. Multipliers 题目连接: http://codeforces.com/contest/615/problem/D Description Ayrat has number n, rep ...

  4. codeforces 615 D. Multipliers (数论 + 小费马定理 + 素数)

    题目链接: codeforces 615 D. Multipliers 题目描述: 给出n个素数,这n个素数的乘积等于s,问p的所有因子相乘等于多少? 解题思路: 需要求出每一个素数的贡献值,设定在这 ...

  5. 【14.67%】【codeforces 615D】Multipliers

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. codeforces 735D Taxes(数论)

    Maximal GCD 题目链接:http://codeforces.com/problemset/problem/735/D ——每天在线,欢迎留言谈论. 题目大意: 给你一个n(2≤n≤2e9) ...

  7. CF 615D Multipliers

    题目:http://codeforces.com/contest/615/problem/D 求n的约数乘积. 设d(x)为x的约数个数,x=p1^a1+p2^a2+……+pn^an,f(x)为x的约 ...

  8. Codeforces 1106F(数论)

    要点 998244353的原根g = 3,意味着对于任意\[1 <= x,y<p\]\[x\neq\ y\]\[g^x\%p\neq\ g^y\%p\]因此可以有构造序列\(q(a)与a一 ...

  9. Codeforces 858A. k-rounding 数论

    题目: 题意:输入n和k,找到一个最小的数,满足末尾有至少k个0和是n的倍数. 最小的情况 ans = n,最大的情况 ans = n*pow(10,k). 令 k = pow(10,k); 我们发现 ...

随机推荐

  1. 笔记-python-内存管理

    笔记-python-内存管理 1.      内存使用 1.1.    对象的内存使用 a = 1 1是一个对象,a是引用,指向1. >>> id(a) 1951821280 这个数 ...

  2. Redis实现之数据库(一)

    服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构体的db数组中,db数组的每个项都是一个redis.h/redisDb结构体,每个redisD ...

  3. linux学习(四) -- supervisor守护进程

      supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.   1.安装 apt-get install ...

  4. 递归查询子类sql

    --通过父节点查询子节点 WITH TREE AS( SELECT * FROM Role WHERE RoleID = 4 -- 要查询的父 id UNION ALL SELECT Role.* F ...

  5. php代码审计 strcmp和MD5函数漏洞

    通过get得到三个值,v1,v2,v3. if第一层判断,v1和v2得到的值不一样,但是对它们进行md5加密后的值得相等. if第二层判断,v3得到的值得和$flag的值相等,满足这两个条件输出fla ...

  6. sql 使用存储过程传递列名或表名作为参数

    原网址: http://www.cnblogs.com/85538649/archive/2011/09/23/2186155.html alter procedure Proc_UpdateDate ...

  7. [python][oldboy][函数篇][1]名称空间

    名称空间:存储名字的空间,分为三种,内置空间,全局空间,局部空间 名称可以是:变量名,函数名,类名等 当遇到一个名字时,首先在自己空间找,再到自己外的空间找 比如 test.py print f # ...

  8. Linux中Source的用法

    source命令:source命令的功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.用法 ...

  9. 使用BootStrap网格布局进行一次演示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. input[type="radio"]自定义样式

    input为radio时,虽然会有默认选中的样式,但是并不符合大多数项目的需求,我们的目标是可以随心所欲自定义它的样式.怎么做呢?其实很简单,只要抓住3点.分别是1.label 2.隐藏自带样式 3. ...