1. 程式人生 > >hdu5895Mathematician QSC+矩陣快速冪+除法取餘

hdu5895Mathematician QSC+矩陣快速冪+除法取餘

Problem Description
QSC dream of becoming a mathematician, he believes that everything in this world has a mathematical law.

Through unremitting efforts, one day he finally found the QSC sequence, it is a very magical sequence, can be calculated by a series of calculations to predict the results of a course of a semester of a student.

This sequence is such like that, first of all,f(0)=0,f(1)=1,f(n)=f(n2)+2f(n1)(n2)Then the definition of the QSC sequence isg(n)=ni=0f(i)2. If we know the birthday of the student is n, the year at the beginning of the semester is y, the course number x and the course total score s, then the forecast mark is x

g(ny)%(s+1).
QSC sequence published caused a sensation, after a number of students to find out the results of the prediction is very accurate, the shortcoming is the complex calculation. As clever as you are, can you write a program to predict the mark?

Input
First line is an integer T(1≤T≤1000).

The next T lines were given n, y, x, s, respectively.

n、x is 8 bits decimal integer, for example, 00001234.

y is 4 bits decimal integer, for example, 1234.
n、x、y are not negetive.

1≤s≤100000000

Output
For each test case the output is only one integer number ans in a line.

Sample Input

2
20160830 2016 12345678 666
20101010 2014 03030303 333

Sample Output

1
317

Source
2016 ACM/ICPC Asia Regional Shenyang Online

fn=2fn1+fn2
fnfn1=2f2n1+fn2fn1
2f2n1=fnfn1fn2fn1
/*****************************/
2f2n=fnfn+1fnfn1
2f2n1=fn1fnfn1fn2
….
2f22=f2f3f2f1
2f21=f1f2f1f0
累加
ni=12f2i=fnfn+1f1f0
因為f0=0
所以ni=0f2i=fnfn+1/2
所以直接構造fn的矩陣快速冪就可以求得了。。。
然後就是兩個小結論要用到。。(orz,窩弱只知道其中一個啊,全場wa到死。。)
1.高次冪取膜
ab%p=aφ(p)+b%φ(p)b>=φ(p)
φ(p)為p的尤拉函式
2.除法取膜
ab%p=a%pbb
所以小範圍爆一下,大點>φ(p)就用矩陣優化。。。

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;


//#define MOD 10000007
LL MOD;
struct Mat{
    int n,m;
    LL mat[9][9];
};
Mat operator *(Mat a,Mat b){
    Mat c;
    memset(c.mat,0,sizeof(c.mat));
    c.n = a.n,c.m = b.m;

    for(int i=1;i<=a.n;i++){
        for(
            
           

相關推薦

hdu5895Mathematician QSC+矩陣快速+除法

Problem Description QSC dream of becoming a mathematician, he believes that everything in this world has a mathematical law. Thro

快速演算法 運算 a^b mod c

題目描述Description 輸入b,p,k的值,程式設計計算bp mod k的值。其中的b,p,k*k為長整型數(2^31範圍內)。 輸入描述Input Description b p k  輸出描述Output Description

快速及其

快速冪 快速冪的作用:快速計算底數的n次冪。 時間複雜度為:O(log₂N) (樸素方法為O(N) 原理 以下以求a的b次方來介紹 把b轉換成二進位制數 該二進位制數第i位的權為2i−

NEFU1493 快速+除法(逆元)

題目: Gugu 有兩個長度無限長的序列A,B A0=a^0/0!,A1=a^1/1!,A2=a^2/2!,A3=a^3/3!…. B0=0, B1=b^1/1!,B2=0,B3=b^3/3!,B4=0, B5=b^5/5! … Douge

cf 450b 矩陣快速(數論模 一大坑點啊)

sent double res nta note follow efi ted containe Jzzhu has invented a kind of sequences, they meet the following property: You are giv

POJ 3233-Matrix Power Series( S = A + A^2 + A^3 + … + A^k 矩陣快速模)

spa nta plm lines case arch lang stream 矩陣 Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 20309

HDU-6395多校7 Sequence(除法分塊+矩陣快速

review lse %d sca code left define hdu fin Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others

B. Jzzhu and Sequences (矩陣快速 + 模)

題目連結 Jzzhu has invented a kind of sequences, they meet the following property:                       

整數快速模)、矩陣快速及其應用

1 #include <cstdio> 2 #include <cstring> 3 typedef long long ll; 4 const int mod = 998244353; 5 struct Matrix { 6 ll x[2][2]; 7 };

NYOJ 301 遞推求值【矩陣快速模】

遞推求值 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:4 描述 給你一個遞推公式: f(x)=a*f(x-2)+b*f(x-1)+c 並給你f(1),f(2

矩陣快速+模運算模板

#include<iostream> #include<cstdio> #include<cstring> #include<string.h> #include<string> #include<cmath&

矩陣快速

pan cout style else str ostream continue bsp col #include<iostream> using namespace std; const int Mod=10000; int main() {

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

代碼 -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)的結果。

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