栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3216 Compositions

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3216 Compositions

#include<iostream>#include<cstring>#include<algorithm>#include<string>#include<cstdio>using namespace std;#define MAX_SIZE 32struct Matrix{    int size;    long long modulo;    long long element[MAX_SIZE][MAX_SIZE];    void setSize(int);    void setModulo(long long);    Matrix operator* (Matrix);    Matrix power(int);};void Matrix::setSize(int a){    for (int i=0; i<a; i++)        for (int j=0; j<a; j++) element[i][j]=0;    size = a;}void Matrix::setModulo(long long a){    modulo = a;}Matrix Matrix::operator* (Matrix param){    Matrix product;    product.setSize(size);    product.setModulo(modulo);    for (int i=0; i<size; i++)        for (int j=0; j<size; j++) for (int k=0; k<size; k++) {     product.element[i][j]+=element[i][k]*param.element[k][j];     product.element[i][j]%=modulo; }    return product;}Matrix Matrix::power(int exp){    Matrix res,A;    A=*this;    res.setSize(size);    res.setModulo(modulo);    for(int i=0;i<size;i++)        res.element[i][i]=1;    while(exp)    {        if(exp&1) res=res*A;        exp>>=1;        A=A*A;    }    return res;}long long a[60];Matrix m;int n,k;int main(){    int  cs;    m.setModulo(1000000000+7);    cin>>cs;    while(cs--)    {        cin>>n>>k;        m.setSize(k);        if(k!=1){        m.element[0][0]=1;        m.element[0][k-1]=1;        for(int i=1;i<k;i++) m.element[i][i-1]=1;        }        else        { m.element[0][0]=2;        }        if(n<k)        { printf("0n");        }        else if(n==k)        { printf("1n");        }        else        { a[0]=1; for(int i=1;i<k;i++)         a[i]=0; int pw=n-k; m=m.power(pw); long long ans=0; for(int i=0;i<k;i++)     ans+=m.element[0][i]*a[i]%10000000007; printf("%lldn",ans);        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号