C. Prime Number----数论+快速幂
来源:互联网 发布:手机视频剪辑合并软件 编辑:程序博客网 时间:2024/05/12 22:24
Simon has a prime number x and an array of non-negative integers a1, a2, ..., an.
Simon loves fractions very much. Today he wrote out number on a piece of paper. After Simon led all fractions to a common denominator and summed them up, he got a fraction: , where number t equals xa1 + a2 + ... + an. Now Simon wants to reduce the resulting fraction.
Help him, find the greatest common divisor of numbers s and t. As GCD can be rather large, print it as a remainder after dividing it by number 1000000007 (109 + 7).
The first line contains two positive integers n and x (1 ≤ n ≤ 105, 2 ≤ x ≤ 109) — the size of the array and the prime number.
The second line contains n space-separated integers a1, a2, ..., an (0 ≤ a1 ≤ a2 ≤ ... ≤ an ≤ 109).
Print a single number — the answer to the problem modulo 1000000007 (109 + 7).
2 22 2
8
3 31 2 3
27
2 229 29
73741817
4 50 0 0 0
1
In the first sample . Thus, the answer to the problem is 8.
In the second sample, . The answer to the problem is 27, as 351 = 13·27, 729 = 27·27.
In the third sample the answer to the problem is 1073741824 mod 1000000007 = 73741817.
In the fourth sample . Thus, the answer to the problem is 1.
题目链接:http://codeforces.com/contest/359/problem/C
想了40分钟的我,还是去看了博客,所有思路都不通。。。
http://blog.csdn.net/blesslzh0108/article/details/61920030
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define inf 1000000007#define LL long longusing namespace std;LL a[100005];LL power(LL x,LL m){ LL ans=1; x=x%inf; while(m){ if(m&1) ans=(ans*x)%inf; x=(x*x)%inf; m/=2; } return ans%inf;}int main(){ LL n,x; LL s=0; scanf("%I64d%I64d",&n,&x); for(int i=0;i<n;i++){ scanf("%I64d",&a[i]); s+=a[i]; } for(int i=0;i<n;i++){ a[i]=s-a[i];//求出分子的幂数 } a[n]=-1; sort(a,a+n); LL cnt=1,ans; for(int i=1;i<=n;i++){ if(a[i]!=a[i-1]){ if(cnt%x==0){//如果系数可以整除x,则在前者+1,前者值发生改变,i--再判断一次 cnt/=x; a[i-1]+=1; i--; } else{//不相等,且系数不能整除x,即为所求 ans=a[i-1]; break; } } else{//如果相等,记录加一 cnt++; } } ans=min(ans,s); printf("%I64d\n",power(x,ans));}
- C. Prime Number----数论+快速幂
- CF 359C Prime Number(数论)
- Codeforces 359C Prime Number (数学+快速幂)
- CodeForces 359C Prime Number 数学+快速幂
- Codeforces #207 div2 C. Prime Number 数论 gcd
- [数论] HOJ 1356 Prime Judge Miller Rabin+快速幂
- CF/359/C. Prime Number
- cf 359c Prime Number
- Codefoces 432C Prime Swaps(数论+贪心)
- Codeforces Round #209 C - Prime Number
- Codeforces 209 div2 C. Prime Number
- Codeforces —— 359C Prime Number
- CF 359C Prime Number 暴力
- (A^B)%C 快速幂乘 (简单数论)
- 数论——快速幂算法 a^b mod c
- [数论]矩阵快速幂
- 数论-快速幂
- 数论->快速幂
- 多线程
- 关于动感单车
- css中绝对定位和相对定位的理解
- 2017 Multi-University Training Contest
- 路由器和交换机的区别,太经典了
- C. Prime Number----数论+快速幂
- Caffe .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用
- python数据分析与展示(二)
- 《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
- 杭电acm 3613Best Reward(字符串)
- Linux源代码—中断
- change dhcp to static on your localhost ip configuration
- G
- hibernate和mybatis共存问题