hrbust/哈理工oj 1592 六芒星【矩阵快速幂】

原创 2016年05月30日 13:18:17

六芒星

Time Limit: 1000 MS

Memory Limit: 32768 K

 

Total Submit: 115(44 users)

Total Accepted: 49(37 users)

Rating: 

Special Judge: No

 

Description

石堆消失之后,wd和Cc进入到了洞中。Wd惊奇的发现洞中是一个空旷的大厅,在大厅的中央有一个巨大的六芒星,在这颗六芒星的六个角上分别对应着六个数字x1,x2,x3,x4,x5,x6,这时走过来一个神秘的使者,使者告诉他们要想见到神龙必须回答他的问题,否则他将誓死捍卫神龙,wd看到了使者手中闪闪发光的武器—蒜伐导轮,知道回答问题是避免不了的了,于是wd再次拿出了他的神器。

    使者说:中央这颗六芒星上的数据会同时进行变换,变换的规则是每个数字加上除了位于它正对面的其余数字,得到的和再对 m 取模,当 k 次变换之后这六个位置的数字依次是什么?(例如:x1位置的数在一次变换之后带到的数字为(x1+x2+x3+x5+x6)%m)

Input

多组测试数据:每组测试数据占两行

第一行两个整数m,k ,意义如题面描述。(1<=m<=1000000000,1<=k<=1000000000) 

第二行六个整数x1,x2,x3,x4,x5,x6表示六芒星六个角上的初始数字。(0<=xi<=100)

Output

对于每组数据,输出六个整数占一行,分别表示x1..x6在k次变换之后得到的数字。

Sample Input

100000 1

1 2 3 4 5 6

Sample Output

17 16 15 20 19 18

 

思路:

一看到K的范围,不用多想,矩阵快速幂优化递推式没得跑。


对于递推式题目已经明确给出,这个题没有什么技术含量,会敲矩阵快速幂和构造矩阵即可,这里我们还是贴出如何构造矩阵:



剩下的就是完成代码实现部分,AC代码:

#include<stdio.h>
#include<string.h>
using namespace std;
#define ll long long int
ll mod,n;
typedef struct Matrix
{
    ll mat[6][6];
}matrix;
matrix A,B,tmp;
Matrix matrix_mul(matrix a,matrix b)
{
    matrix c;
    memset(c.mat,0,sizeof(c.mat));
    int i,j,k;
    for(int i=0;i<6;i++)
    {
        for(int j=0;j<6;j++)
        {
            for(int k=0;k<6;k++)
            {
                c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
                c.mat[i][j]%=mod;
            }
        }
    }
    return c;
}
Matrix matrix_quick_power(matrix a,ll k)//矩阵快速幂0.0
{
    matrix b;
    memset(b.mat,0,sizeof(b.mat));
    for(int i=0;i<6;i++)
    b.mat[i][i]=1;//单位矩阵b
    while(k)
    {
        if(k%2==1)
        {
            b=matrix_mul(a,b);
            k-=1;
        }
        else
        {
            a=matrix_mul(a,a);
            k/=2;
        }
    }
    return b;
}
int main()
{
    while(~scanf("%lld%lld",&mod,&n))
    {
        memset(tmp.mat,0,sizeof(tmp.mat));
        for(int i=0;i<6;i++)
        {
            scanf("%lld",&tmp.mat[i][0]);
        }
        for(int i=0;i<6;i++)
        {
            for(int j=0;j<6;j++)
            {
                A.mat[i][j]=1;
            }
        }
        A.mat[0][3]=0;A.mat[1][4]=0;A.mat[2][5]=0;A.mat[3][0]=0;A.mat[4][1]=0;A.mat[5][2]=0;
        B=matrix_quick_power(A,n);
        B=matrix_mul(B,tmp);
        for(int i=0;i<6;i++)
        {
            if(i==5)
            {
                printf("%lld\n",B.mat[i][0]);
            }
            else
            printf("%lld ",B.mat[i][0]);
        }
    }
}




版权声明:0.0小白有写的不好不对的地方请指出~

哈理工OJ 1184 早起一水(水题)

题目链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1184 早起一水 Time Lim...
  • qq_32866009
  • qq_32866009
  • 2016年05月17日 09:51
  • 535

hrbust 哈理工oj 2179 组合【基础dfs过】

组合 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 86(55 users) ...
  • mengxiang000000
  • mengxiang000000
  • 2016年03月09日 17:19
  • 389

绘制六芒星战斗力属性图 —— h5 canvas 初体验

最近用MUI做Web app时想实现一个六芒星战斗力图的(类似LPL赛前战队实力分析图)效果,由于正多边形是十分规则的,所以感觉很轻易就可以用h5 canvas来实现。...
  • Emptyset110
  • Emptyset110
  • 2015年09月01日 08:50
  • 2865

绘制人物属性的六芒星

在制作人物属性界面时,有绘制人物属性六芒星的需求。需要自己写一个六芒星的meh 制作UI,使用NGUI插件,在panel下面新建一个空物体,上面挂有meshRender,meshFilter和我们自...
  • cxcalm
  • cxcalm
  • 2017年04月22日 14:47
  • 577

哈理工oj 1079 I can do it【贪心】

哈理工oj 1079,hrbust 1079
  • mengxiang000000
  • mengxiang000000
  • 2016年03月19日 10:14
  • 704

android 自定义View六芒星(六角星)

public class Xing2View extends CustomView { public Xing2View(Context context) { super(con...
  • qq_28934205
  • qq_28934205
  • 2017年10月16日 11:22
  • 144

canvas画布变换画六芒星

要求使用canvas的画布变换方法。 效果如下: 代码如下: 六芒星 var canvas = document.querySelector('#canva...
  • sysuzjz
  • sysuzjz
  • 2016年11月09日 23:54
  • 1415

算法生成N芒星

前面两个图像生成算法是:道教的太极八卦图和佛教的卐和卍字图。这一节整个洋气的图像:芒星。但愿我别召唤出什么恐怖的禁忌,尤其今晚还是万圣节之夜。平时看玄幻小说,经常读到有关六芒星,七芒星,九芒星的技法。...
  • f6s281t0
  • f6s281t0
  • 2014年11月04日 18:05
  • 1570

哈理工oj 1946 你猜

你猜 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 1626(1007 user...
  • eletroram
  • eletroram
  • 2017年10月07日 12:09
  • 640

哈理工hrbust OJ 2225 解题报告 【递推】

粉刷栅栏 Time Limit: 500 MS Memory Limit: 32768 K Total Submit: 58(19 users) Total Accepted:...
  • qq_33184171
  • qq_33184171
  • 2015年12月22日 10:43
  • 478
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hrbust/哈理工oj 1592 六芒星【矩阵快速幂】
举报原因:
原因补充:

(最多只允许输入30个字)