zoukankan      html  css  js  c++  java
  • 矩阵够造+二分幂——hdu1588

    构造矩阵,题比较水不解释了
    View Code
    #include<stdio.h>
    #include
    <string.h>

    int mod;//矩阵中间数求模
    int n;
    int a[19];

    struct data
    {
    int map[11][11];
    };

    data matrix(data a,data b)
    //矩阵乘法
    {
    int i,j,k;
    data re;
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
    int all=0;
    for(k=0;k<n;k++)
    {
    all
    +=(a.map[i][k]*b.map[k][j])%mod;
    all
    %=mod;
    }
    re.map[i][j]
    =all%mod;
    }
    }
    return re;
    }

    data matrixT(data f,
    int p)//二分求矩阵
    {
    int i,j;
    data all;
    for(i=0;i<n;i++){//初始化一个单位矩阵
    for(j=0;j<n;j++){
    all.map[i][j]
    =0;
    if(i==j)all.map[i][j]=1;
    }
    }

    while(p>0)//二分求矩阵
    {
    if(p&1==1)
    {all
    =matrix(all,f);}

    f
    =matrix(f,f);
    p
    >>=1;
    }
    return all;
    }

    int main()
    {
    int p;
    n
    =10;
    while(scanf("%d%d",&p,&mod)!=EOF)
    {
    p
    =p-9;
    int i,j;
    data f;
    for(i=0;i<n;i++)
    {
    scanf(
    "%d",&a[i]);
    }
    for(i=0;i<n-1;i++)
    {
    for(j=0;j<n;j++)
    {
    f.map[i][j]
    =0;
    if(i+1==j)
    f.map[i][j]
    =1;
    }
    }
    for(j=0;j<n;j++)
    f.map[
    9][j]=a[n-j-1];
    data end
    =matrixT(f,p);

    int all=0;
    for(j=0;j<n;j++)
    {
    all
    +=end.map[9][j]*j%mod;
    }
    printf(
    "%d\n",all%mod);
    }
    return0;
    }

      

  • 相关阅读:
    响应式设计
    小视频-上传视频
    美多商城项目总结
    jwt 接口加密
    flask入门小方法
    flask的继承和包含
    flask中的宏
    flask的jinja2模板中过过滤器的相关小内容
    flask中的简单的前端写入
    flask的cookie和session的简单原理
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2116580.html
Copyright © 2011-2022 走看看