程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> NYOJ 420 p次方求和 (快速冪+同余定理)

NYOJ 420 p次方求和 (快速冪+同余定理)

編輯:關於C++

題目描述:

 

一個很簡單的問題,求1^p+2^p+3^p+……+n^p的和。 輸入第一行單獨一個數字t表示測試數據組數。接下來會有t行數字,每行包括兩個數字n,p,
輸入保證0 輸出輸出1^p+2^p+3^p+……+n^p對10003取余的結果,每個結果單獨占一行。樣例輸入
210 110 2
樣例輸出
55385

題目分析:

快速冪+同余定理的問題,雖然已經寫了好多次的快速冪但是還是沒有記住,每次都是看模板,這次一定記住它。

 

AC代碼:

 

 
/**
 *快速冪取摸+同余
 */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int mod(int a,int b,int n){
    int t = 1;
    if (b == 0)
        return 1;
    if (b == 1)
         return a%n;
    t = mod(a, b>>1, n);
    t = t*t % n;
    if (b&1){//b是奇數
        t = t*a % n;
    }
    return t;
 }

int main()
{
    int t;
    cin>>t;
    while(t--){
        int p,n;
        cin>>n>>p;
        int res=0;
        for(int i=1;i<=n;i++){
            int t=mod(i,p,10003);
            //cout<

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved