CodePlus 2017 12 月赛 可做题2 矩阵乘法+exgcd

来源:互联网 发布:黑马程序员html 编辑:程序博客网 时间:2024/05/16 02:15

题意

这里写图片描述
这里写图片描述

分析

注意到a1ak贡献的系数为斐波那契数列第k-2项,a2ak贡献的系数为第k-1项,那么可以把这两项求出来,那么a2就一定是某个不定方程ax+by=c的解x。
设d为gcd(a,b),先解出该方程一个解x0,y0,有个定理就是该方程的全部解是x0+(b/d)n,y0-(a/d)n,那么就很容易求出区间解的数量了。

代码

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;int p,m;LL k,l,r,a1;struct Matrix{int a[3][3];}a;void mul(Matrix &c,Matrix a,Matrix b){    memset(c.a,0,sizeof(c.a));    for (int i=1;i<=2;i++)        for (int j=1;j<=2;j++)            for (int k=1;k<=2;k++)                (c.a[i][j]+=(LL)a.a[i][k]*b.a[k][j]%p)%=p;}Matrix ksm(Matrix x,LL y){    Matrix ans;ans.a[1][1]=ans.a[2][2]=1;ans.a[1][2]=ans.a[2][1]=0;    while (y)    {        if (y&1) mul(ans,ans,x);        mul(x,x,x);y>>=1;    }    return ans;}void exgcd(LL &x,LL &y,LL a,LL b){    if (!b) {x=1;y=0;return;}    exgcd(x,y,b,a%b);    LL tmp=x;x=y;y=tmp-(a/b)*y;}int gcd(int x,int y){    if (!y) return x;    else return gcd(y,x%y);}int main(){    int T;scanf("%d",&T);    while (T--)    {        scanf("%lld%lld%lld%lld%d%d",&a1,&l,&r,&k,&p,&m);        a1%=p;        a.a[1][1]=0;a.a[1][2]=a.a[2][1]=a.a[2][2]=1;        a=ksm(a,k-3);        int f2=(a.a[1][1]+a.a[2][1])%p,f1=(a.a[1][2]+a.a[2][2])%p;        m=(m+p-(LL)f2*a1%p)%p;        int d=gcd(f1,p);        if (m%d>0) {puts("0");continue;}        LL x,y;        exgcd(x,y,f1,p);        x*=m/d;x%=p/d;        if (x<0) x+=p/d;        LL ans=0;        if (r>=x) ans+=(r-x)/(p/d)+1;        if (l-1>=x) ans-=(l-1-x)/(p/d)+1;        printf("%lld\n",ans);    }    return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 九幽龙戒全集下载 九幽龙戒全本下载 九幽龙戒怎么样 九幽龙戒txt下载 九幽龙戒作者 龙悔戒网瘾学校 玉戒 龙战于野 乾龙战天 一龙战群美 龙战骑士 龙战 一龙战四凤 龙战荒野 龙战都市 九龙战尊决 万龙战尊 龙战在野 第49章一龙战五凤 暴走大侠龙战 校园宿舍一龙战四凤 暴走大侠龙战于野 彩虹岛枪龙战 倚天之龙战八荒 击楫中流 龙戬 都市偷心龙手全文阅读txt下载 翼手龙 都市偷心龙手 龙武手游什么职业适合平民 龙武2手游下载 玄元龙武手游 龙与地下城手游 龙之契约手游 方舟手游精英龙可以驯服么 擒龙手 泰式抓龙筋会射吗 泰国抓龙筋 抓龙筯什么意思 抓龙筋按摩步骤示意图 抓龙筋想要抓射可以吗 抓龙筋忍不住怎么办