1. 程式人生 > >等比數列求和快速冪

等比數列求和快速冪

CF-678D

看求的和(a^n-1)/(a-1)按奇偶遞推

#include<iostream>
using namespace std;
const long long m=1e9+7;
long long mul(long long a,long long b)
{
    long long t=a%m,res=0;
    while(b)
    {
        if(b&1)
        {
            res+=t;
            if(res>m) res-=m;
        }
        t<<=1;
        if(t>m) t-=m;
        b>>=1;
    }
    return res;
}
long long pow_mod(long long a,long long b)
{
    long long t=a%m,res=1;
    while(b)
    {
        if(b&1) res=mul(res,t);
        t=mul(t,t);
        b>>=1;
    }
    return res;
}
long long fun(long long a,long long b,long long n)
{
    if(n==1) return b;
    if(n&1) return fun(a,b,n-1)+mul(b,pow_mod(a,n-1));
    else return fun(mul(a,a),mul(a+1,b),n>>1);
}
int main()
{
    long long a,b,x,n,g=0;
    cin>>a>>b>>n>>x;
    g+=mul(x,pow_mod(a,n));
    if(a==1) g+=mul(b,n);
    else g+=(fun(a,b,n));
    g%=m;
    cout<<g<<endl;
}


相關推薦

等比數列求和快速

CF-678D 看求的和(a^n-1)/(a-1)按奇偶遞推 #include<iostream> using namespace std; const long long m=1e

POJ 3233 Matrix Power (矩陣快速+等比數列求和)

Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 23165 Accepted: 9651 Description Gi

POJ 3233 Matrix Power Series (矩陣快速+等比數列二分求和

Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 23205 Accepted: 9669 Description Given a n × n ma

HDU 4704 Sum(隔板原理+組合數求和公式+費馬小定理+快速

ace php 模板 erl char printf 證明 style ron 題目傳送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description Sample Input 2 Sam

POJ 3233 Matrix Power Series (矩陣乘法+快速+等比二分求和)

再加上快速冪演算法和就好了 #include<iostream> #include<cstring> #include<string> #include<cstdio> #include<algorithm>

[noip模擬賽]求和快速

題目描述 求1b+2b+……+ab的和,對10000取模。 多組資料。 T<=100,a,b<=10^9 題解 一個很顯然的性質:ib≡(i+p)b(modp) 所以只要用快速冪

快速初步學習

去掉 進制 二進制 末尾 刪掉 nbsp light log mil 快速冪顧名思義就是快速求冪,也常用於求冪的模(余數) 例如求Xq,常規算法是乘q次X,時間復雜度為O(n),而快速冪復雜度為O(log2n),我們看下如何實現 n用二進制可寫成2k1+2K2+..

人生第一個快速的題(HDU - 1097--A hard puzzle )

快速冪算法 pre namespace using str logs main ref cin 題意: 最簡單的快速冪。給你兩個數n和m,求n^m的最後一位; 解題思路: 額,快速冪就很簡單了,這裏只要最後一位可以一對每次運算都%10; 代碼: #include<c

快速算法(矩陣快速還不是很會。。日後會更新)

代碼 -s get 運算 logs == data 。。 outb PS:轉載,自己寫的不如人家,怕誤導。轉載地址:http://www.cnblogs.com/CXCXCXC/p/4641812.html 首先,快速冪的目的就是做到快速求冪,假設我們要求a^b,按照樸素算

poj 3070 Fibonacci(矩陣快速求Fibonacci數列)

代碼 include cnblogs inf stream exp class set names 題目鏈接: http://poj.org/problem?id=3070 題意: 我們知道斐波那契數列0 1 1 2 3 5 8 13…… 數列中的第i位為第i-1位

poj 3735 Training little cats (矩陣快速

log ack make .cn code little logs 矩陣快速冪 style 題目鏈接: http://poj.org/problem?id=3735 題意: 有n只貓咪,開始時每只貓咪有花生0顆,現有一組操作,由下面三個中的k個操作組成:

poj3233 Matrix Power Series 矩陣快速

分享 std 答案 span print .org log .cn ring 題目鏈接: http://poj.org/problem?id=3233 題意: 給你A矩陣,A矩陣是n*n的一個矩陣,現在要你求S = A + A^2 + A^3 + … + A^k.那麽s一定

[luoguP1962] 斐波那契數列(矩陣快速

truct ons 技術 pan opera http 快速冪 printf ble 傳送門 解析詳見julao博客連接 http://worldframe.top/2017/05/10/清單-數學方法-——-矩陣/ —&

51Nod - 1113 矩陣快速

return ios brush tdi 需要 can vector 元素 turn 51Nod - 1113 矩陣快速冪 給出一個N * N的矩陣,其中的元素均為正整數。求這個矩陣的M次方。由於M次方的計算結果太大,只需要輸出每個元素Mod (10^9 + 7)的結果。

快速算法

div amp cst span log sin 快速 long urn 1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 long long

51nod1113(矩陣快速模板)

matrix mod aps amp alt for question class color 題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113 題意:中文題誒~ 思路:矩

hdu4549矩陣快速+費馬小定理

次方 pla pragma nod 技術分享 gif 矩陣 end eof 轉移矩陣很容易求就是|0 1|,第一項是|0| |1 1| |1| 然後直接矩陣快速冪,要用到費馬小定理 :假如p

poj3734矩陣快速

play mes end nod using def cst efi set 挑戰上面的題目,感覺腦洞很大 分別找紅藍個數全為偶,全為奇,一奇一偶的個數ai,bi,ci 轉移矩陣是| 2 1 0 |,是一個對稱矩陣(會不會有什麽聯系。) | 2

51nod 1537 分解(矩陣快速)

class 遞推 def stream cout out while cin 51nod 分析:先寫出前幾項,發現都是有解的.記(1+√2)^n=a+b√2,可以歸納證明,當n為奇數時,m=a^2+1,n為偶數時,m=a^2.寫出a的遞推式,用矩陣快速冪算一下a即可.

快速+分治(洛谷P1045 麥森數 noip2003)

高精 進制 素數 str c++ efi ref == com 形如的素數稱為麥森數,這時一定也是個素數。但反過來不一定,即如果是個素數,不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的一個是,它有909526位。麥森數有許多重要應用,它與完全數密切相關