暴躁的阿生

Description

 

阿生最近迷上了解数学题,其中有一道题是这样的:

,对于给定的q,n,p,需要计算S的值,阿生无论如何也解不出来,这导致阿生内心极其崩溃。为了防止阿生做出出格的举动,大家快帮帮他吧

Input

 

输入包含三个整数,q,n,p       1<= q,n,p <=10^9;
 

Output

 

输出S的值

Sample Input 1 

2 3 100

Sample Output 1

14

Sample Input 2 

511 4 520

Sample Output 2

184

 

又是一道因为没有人AC而降低测试点的题?

求幂有一个 快速幂的算法,我只是知道,但我不会写

我直接就粘贴过来模板了

int quickPow(int a,int b,int m){
    int sum=1;
    while(b){
        if(b&1) sum=sum*a%m;
        b>>=1;
        a=a*a%m;
    }
    return sum;
}

AC答案

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int a,b,m;
int quickPow(int a,int b,int m){
    int sum=1;
    while(b){
        if(b&1) sum=sum*a%m;
        b>>=1;
        a=a*a%m;
    }
    return sum;
}
int main(){
    scanf("%d%d%d",&a,&b,&m);
    int sum=0;
    for(int i=1;i<=b;i++){
    	sum+=quickPow(a,i,m);
    	//cout<<sum;
	}
    printf("%d\n",sum%m);
    return 0;
}