当前位置: 代码迷 >> 综合 >> ZCMU--1202: 3的幂的和(C语言)
  详细解决方案

ZCMU--1202: 3的幂的和(C语言)

热度:25   发布时间:2023-12-06 10:08:05.0

Description

求:3^0 + 3^1 +...+ 3^(N) mod 1000000007。

Input

每行一个整数N(0 <= N <= 10^9)

Output

输出:计算结果

Sample Input

3

Sample Output

40

HINT

 (a/b)%c=(a%(b*c))/b (a 能整除b)

解析:该问题就是(等比数列求和+快速幂算法),注意题目中的提示,除法去摸要乘逆元,不然会WA。

#include <stdio.h>
long long quickmod(long long base,long long pow){	//快速幂函数噢 long long result=1;while(pow>0){	if(pow&1){result=(result*base)%1000000007;}pow>>=1;base=(base*base)%1000000007;}return result;
}
int main()
{long long n,i;				while(~scanf("%lld",&n)){			if(n==0) printf("1\n");		//n==0,就是1			else printf("%lld\n",(1-quickmod(3,n+1))*(-500000004)%1000000007);}	//500000004是2在模1000000007下的逆元,除法在取模操作时候要乘逆元,不能直接除return 0;
}