zoukankan      html  css  js  c++  java
  • UVA 10655 Contemplation! Algebra

    通过计算得到递推公式

    直接递推计算应会超时(未尝试),比较好的方法是转换为矩阵之后用矩阵快速幂优化。

    即,n>=1,

    另外,需要注意输入的结束,“Input is terminatedby a line containing only two zeroes. ”

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <map>
     4 #include <vector>
     5 #include <functional>
     6 #include <string>
     7 #include <cstring>
     8 #include <queue>
     9 #include <set>
    10 #include <cmath>
    11 #include <cstdio>
    12 using namespace std;
    13 #define IOS ios_base::sync_with_stdio(false)]
    14 typedef long long LL;
    15 const int INF=0x3f3f3f3f;
    16 
    17 const int maxn=2;
    18 typedef struct matrix{
    19     LL v[maxn][maxn];
    20     void init(){memset(v,0,sizeof(v));}
    21 }M;
    22 M mul(const M &a,const M &b,int L,int m,int n)
    23 {
    24     M c; c.init();
    25     for(int i=0;i<L;i++){
    26         for(int j=0;j<n;j++){
    27             for(int k=0;k<m;k++)//注意j,k范围
    28                 c.v[i][j]+=a.v[i][k]*b.v[k][j];
    29         }
    30     }
    31     return c;
    32 }
    33 M power(M x,int L,LL p)
    34 {
    35     M tmp; tmp.init();
    36     for(int i=0;i<L;i++)
    37         tmp.v[i][i]=1;
    38     while(p){
    39         if(p&1) tmp=mul(x,tmp,L,L,L);
    40         x=mul(x,x,L,L,L);
    41         p>>=1;
    42     }
    43     return tmp;
    44 }
    45 int main()
    46 {
    47     LL p,q,n;
    48     M s,t;
    49     while(scanf("%lld%lld%lld",&p,&q,&n)==3){
    50         if(n==0) {puts("2");continue;};
    51         s.init();
    52         s.v[0][0]=p;
    53         s.v[1][0]=2;
    54         t.init();
    55         t.v[0][0]=p;
    56         t.v[0][1]=-q;
    57         t.v[1][0]=1;
    58         t=power(t,2,n-1);
    59         t=mul(t,s,2,2,1);
    60         printf("%lld
    ",t.v[0][0]);
    61     }
    62 }
  • 相关阅读:
    sublime插件时间
    git与github
    字符编码笔记:ASCII,Unicode和UTF-8
    阮一峰:互联网协议入门
    从理论到实践,全方位认识DNS
    ci事务
    linux下启动oracle
    Java连接Oracle
    我的博客终于开通了,加油!
    FILTER 执行次数
  • 原文地址:https://www.cnblogs.com/cumulonimbus/p/5694807.html
Copyright © 2011-2022 走看看