generator 1【矩陣快速冪】

題目描述
You are given four positive integers x0,x1,a,bx_0, x_1, a, bx0?,x1?,a,b. And you know xi=a?xi?1+b?xi?2x_i = a \cdot x_{i-1} + b \cdot x_{i-2}xi?=a?xi?1?+b?xi?2? for all i≥2i \ge 2i2.

Given two positive integers n, and MOD, please calculate xnx_nxn? modulo MOD.

Does the problem look simple? Surprise! The value of n may have many many digits!

輸入描述:
The input contains two lines.
The first line contains four integers x0,x1,a,bx_0, x_1, a, bx0?,x1?,a,b (1≤x0,x1,a,b≤109)(1 \le x_0, x_1, a, b \le 10^9)(1x0?,x1?,a,b109)
The second line contains two integers nnn, MOD (1≤n&lt;10(106),109&lt;MOD≤2×109,nhasnoleadingzero)(1 \le n &lt; 10^{(10^6)}, 10^9 &lt; MOD \le 2 \times 10^9 , n\ has\ no\ leading\ zero)(1n<10(106),109<MOD2×109,n?has?no?leading?zero).

輸出描述:
Print one integer representing the answer.

示例1
輸入
1 1 1 1
10 1000000001
輸出
89
說明
The resulting sequence x is Fibonacci sequence. The 11-th item is 89.

示例2
輸入
1315 521 20185 5452831
9999999999999999999999999999999999999 1000000007
輸出
914730061

題目大意:
已知公式xi=a?xi?1+b?xi?2x_i=a \cdot x_{i-1} + b \cdot x_{i-2}xi?=a?xi?1?+b?xi?2?
第一行輸入x0,x1,a,bx_0,x_1,a,bx0?,x1?,a,b
第二行輸入n,pn,pn,p
xn%px_n\%pxn?%p的值

解題思路:
由于此題nnn的數據范圍很大,而且又知道公式,所以可以很容易想到是矩陣快速冪的裸題,但由于nnn的范圍很大,所以需將二進制的快速冪寫法改為十進制。
由于xi=a?xi?1+b?xi?2x_i=a \cdot x_{i-1} + b \cdot x_{i-2}xi?=a?xi?1?+b?xi?2?
所以
∣xn+1xn00∣=∣x0x100∣?∣a1b0∣n\begin{vmatrix} x_{n+1} &amp; x_n \\ 0 &amp; 0 \end{vmatrix}=\begin{vmatrix} x_0 &amp; x_1 \\ 0 &amp; 0 \end{vmatrix}*\begin{vmatrix} a &amp; 1 \\ b &amp; 0 \end{vmatrix}^n?xn+1?0?xn?0??=?x0?0?x1?0????ab?10??n
因此直接敲矩陣快速冪即可。

代碼:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
struct node
{ll arr[2][2];node() {ms(arr);}
};
ll p;
node mul(node a,node b) {node c;for(int i=0;i<2;i++) {for(int j=0;j<2;j++) {for(int k=0;k<2;k++) {c.arr[i][j]=(c.arr[i][j]+(a.arr[i][k]*b.arr[k][j])%p)%p;}}}return c;
}
char str[1001000];
node b1,base;
int len;
ll quickpow() {for(int i=len-1;i>=0;i--) {int x=(int)(str[i]-'0');node nape2;nape2.arr[0][0]=base.arr[0][0];nape2.arr[0][1]=base.arr[0][1];nape2.arr[1][0]=base.arr[1][0];nape2.arr[1][1]=base.arr[1][1];while(x) {if(x&1) b1=mul(b1,nape2);nape2=mul(nape2,nape2);x>>=1;}node nape1=mul(base,base);base=mul(base,base);base=mul(base,base);base=mul(base,base);base=mul(nape1,base);}return b1.arr[0][1]%p;
}
int main() 
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0); ll x0,x1,a,b;scanf("%I64d %I64d %I64d %I64d",&x0,&x1,&a,&b);scanf("%s",str);scanf("%I64d",&p);base.arr[0][0]=a;base.arr[0][1]=1LL;base.arr[1][0]=b;base.arr[1][1]=0;b1.arr[0][0]=x1;b1.arr[0][1]=x0;b1.arr[1][0]=0;b1.arr[1][1]=0;len=strlen(str);printf("%I64d\n",quickpow());return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536280.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Give Candies【快速冪+歐拉】

Give Candies 時間限制: 1 Sec 內存限制: 128 MB 提交: 243 解決: 92 [提交] [狀態] [命題人:admin] 題目描述 There are N children in kindergarten. Miss Li bought them N candies。To make the process more interesting, Miss Li comes up with the rule: All the childr…

Save the Room【找規律】

Save the Room 時間限制: 1 Sec 內存限制: 128 MB 提交: 149 解決: 90 [提交] [狀態] [命題人:admin] 題目描述 Bob is a sorcerer. He lives in a cuboid room which has a length of A, a width of B and a height of C, so we represent it as ABC. One day, he finds that …

Participate in E-sports【Java大數+二分】

Participate in E-sports 時間限制: 2 Sec 內存限制: 128 MB 提交: 194 解決: 53 [提交] [狀態] [命題人:admin] 題目描述 Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don’t know which one to choose, so they use a way to…

Poor God Water【矩陣快速冪】

Poor God Water 時間限制: 1 Sec 內存限制: 128 MB 提交: 102 解決: 50 [提交] [狀態] [命題人:admin] 題目描述 God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him that some sequence of eating will make them poisonou…

Transport Ship【多重背包】

Transport Ship 時間限制: 1 Sec 內存限制: 128 MB 提交: 175 解決: 65 [提交] [狀態] [命題人:admin] 題目描述 There are N different kinds of transport ships on the port. The i^th kind of ship can carry the weight of V[i] and the number of the ith kind of ship i…

洛谷P2015 二叉蘋果樹【樹形dp】

P2015 二叉蘋果樹 時間限制 1.00s 內存限制 125.00MB 題目描述 有一棵蘋果樹&#xff0c;如果樹枝有分叉&#xff0c;一定是分2叉&#xff08;就是說沒有只有1個兒子的結點&#xff09; 這棵樹共有N個結點&#xff08;葉子點或者樹枝分叉點&#xff09;&#xff0c;編號為1-N,…

洛谷P2014【樹形dp】

P2014 選課 時間限制 1.00s 內存限制 125.00MB 題目描述 在大學里每個學生&#xff0c;為了達到一定的學分&#xff0c;必須從很多課程里選擇一些課程來學習&#xff0c;在課程里有些課程必須在某些課程之前學習&#xff0c;如高等數學總是在其它課程之前學習。現在有N門功課&…

洛谷P2016 戰略游戲【樹形dp】

P2016 戰略游戲 時間限制 1.00s 內存限制 125.00MB 題目描述 Bob喜歡玩電腦游戲&#xff0c;特別是戰略游戲。但是他經常無法找到快速玩過游戲的辦法。現在他有個問題。 他要建立一個古城堡&#xff0c;城堡中的路形成一棵樹。他要在這棵樹的結點上放置最少數目的士兵&#x…

Shell Pyramid【數學+二分】

Shell Pyramid 時間限制: 1 Sec 內存限制: 128 MB 提交: 291 解決: 95 [提交] [狀態] [命題人:admin] 題目描述 In the 17th century, with thunderous noise, dense smoke and blazing fire, battles on the sea were just the same as those in the modern times. But at tha…

Degree Sequence of Graph G【模擬】

Degree Sequence of Graph G 時間限制: 1 Sec 內存限制: 128 MB 提交: 362 解決: 92 [提交] [狀態] [命題人:admin] 題目描述 Wang Haiyang is a strong and optimistic Chinese youngster. Although born and brought up in the northern inland city Harbin, he has deep lov…

Simple Addition expression【打表+二分】

Simple Addition expression 時間限制: 1 Sec 內存限制: 128 MB 提交: 355 解決: 80 [提交] [狀態] [命題人:admin] 題目描述 A luxury yacht with 100 passengers on board is sailing on the sea in the twilight. The yacht is ablaze with lights and there comes out laug…

洛谷P2622 關燈問題II【狀壓dp+bfs】

P2622 關燈問題II 題目描述 現有n盞燈&#xff0c;以及m個按鈕。每個按鈕可以同時控制這n盞燈——按下了第i個按鈕&#xff0c;對于所有的燈都有一個效果。按下i按鈕對于第j盞燈&#xff0c;是下面3中效果之一&#xff1a;如果a[i][j]為1&#xff0c;那么當這盞燈開了的時候&am…

洛谷P1879 [USACO06NOV]玉米田Corn Fields【狀壓dp】

P1879 [USACO06NOV]玉米田Corn Fields 時間限制 1.00s 內存限制 125.00MB 題目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number…

LEAGUE TABLES【模擬】

LEAGUE TABLES 時間限制: 1 Sec 內存限制: 128 MB 提交: 349 解決: 150 [提交] [狀態] [命題人:admin] 題目描述 League football (known in some circles as soccer) has been played in England since 1888 and is the most popular winter game through most of Europe, jus…

MUSICAL CHAIRS【模擬】

MUSICAL CHAIRS 時間限制: 1 Sec 內存限制: 128 MB 提交: 386 解決: 76 [提交] [狀態] [命題人:admin] 題目描述 Musical chairs is a game frequently played at children’s parties. Players are seated in a circle facing outwards. When the music starts, the players h…

Bomb HDU - 3555【數位dp】

Bomb HDU - 3555 The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current number sequence includes the sub-sequence “49”, the power…

不要62 HDU - 2089【數位dp】

不要62 HDU - 2089 杭州人稱那些傻乎乎粘嗒嗒的人為62&#xff08;音&#xff1a;laoer&#xff09;。 杭州交通管理局經常會擴充一些的士車牌照&#xff0c;新近出來一個好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的數字了&#xff0c;這樣一來&#xff0c;就可…

PACKING【二維01背包】

PACKING 時間限制: 1 Sec 內存限制: 128 MB 提交: 278 解決: 24 [提交] [狀態] [命題人:admin] 題目描述 It was bound to happen. Modernisation has reached the North Pole. Faced with escalating costs for feeding Santa Claus and the reindeer, and serious difficulti…

機器人軍團【動態規劃】

機器人軍團 時間限制: 1 Sec 內存限制: 64 MB 提交: 279 解決: 139 [提交] [狀態] [命題人:admin] 題目描述 邪狼&#xff1a;“怎么感覺這些機器人比我還聰明&#xff1f;不是說人工智能永遠不能超越人類嗎&#xff1f;” 天頂星人&#xff1a;“你們真是目光短淺&#xff0c…

【動態規劃】抄近路

【動態規劃】抄近路 時間限制: 1 Sec 內存限制: 64 MB 提交: 105 解決: 68 [提交] [狀態] [命題人:admin] 題目描述 “最近不知道怎么回事&#xff0c;感覺我們這個城市變成了一個神奇的地方&#xff0c;有時在路上走著走著人就消失了&#xff01;走著走著突然又有人出現了&…