LS 38 Geometric sum(数论+二分快速幂)
2013-03-09 14:23
225 查看
Geometric sum
Compute (a+a2+…an)modm.
Input
Three integers a,n,m.(1≤a,n,m≤1018)
Output
The only integer denotes the result.
Sample input
2 2 1000000000
Sample output
6
思路;看代码吧
#include<iostream> #include<cstring> using namespace std; long long c,x,n; long long mul(long long a,long long b)///(a*b)%c { long long ret=0; a%=c;b%=c; while(a) { if(a&1) ret=(ret+b)%c; a>>=1;b<<=1;b%=c; } return ret; } long long sqr(long long x,long long n)///(x^n)%c { long long ret=1; if(n==1)return x%c; while(n) {if(n&1)ret=mul(x,ret); x=mul(x,x);n>>=1; } return ret; } long long pow(long long x,long long n)///(x+x^2...)%c { long long ret=0; if(n==1)return x%c; if(n&1) { ret=mul(pow(x,n/2),sqr(x,n/2+1L)+x); ret=(ret+x)%c; } else { ret=mul(pow(x,n/2),sqr(x,n/2)+1L); } return ret; } int main() { while(cin>>x>>n>>c) { cout<<pow(x,n)<<"\n"; } }
相关文章推荐
- LS 38 Geometric sum(数论+二分快速幂)
- poj 1845 Sumdiv(数论:欧拉函数+二分求等比数列前n项和+快速幂取模)
- poj 1845 Sumdiv(数论+二分)
- [数论+二分求等比数列]POJ 1845 Sumdiv
- hdu 4549(矩阵优化递推,数论,二分快速幂)
- poj1845 Sumdiv(数论,因数和,等比数列,快速幂)
- [WIKIOI 1250]Fibonacci数列(数论+数学+矩阵乘法+二分快速幂)
- POJ 1845 Sumdiv <数论(逆元 / 二分递归)>
- POJ Sumdiv (数论+二分等比数列求和)
- POJ 1845 Sumdiv(数论+快速幂)
- ACM-二分-POJ-2785-4 Values whose Sum is 0
- leetcode 410. Split Array Largest Sum 最小化最大数 + 一个很棒的二分搜索BinarySearch的做法 + 真心很棒
- LeetCode 363 Max Sum of Rectangle No Larger Than K (二分)
- UVA 10791 - Minimum Sum LCM(数论)
- Codeforces 456 div2 A B ***D(思维题) ***E(二分/DFS/数论)
- 【Codeforces Round 276 (Div 2)D】【数论 正难则反 枚举倍数 二分 O(nlogn)】Maximum Value n个数大数mod小数找最大余数
- POJ 2785 4 Values whose Sum is 0 二分
- zoj 3665 数论 二分 两个参数
- HDU 3280 Equal Sum Partitions(二分查找)
- codeforces 300E Empire Strikes Back 数论+二分查找