24h購物| | PChome| 登入
2011-10-29 06:52:31| 人氣3,643| 回應0 | 上一篇 | 下一篇

a272. 猥瑣罐頭下樓梯

推薦 0 收藏 0 轉貼0 訂閱站台

a272. 猥瑣罐頭下樓梯

內容 :

有一天,猥瑣罐頭在下樓梯,不知怎麼了,爬了好久都看不到盡頭.....

 

圖片來源 : http://znowledge.blogspot.com/2007/11/blog-post_3307.html 

 

罐頭從地下 0 樓開始往下走( 去找猥瑣桑葉? ),他只能一次走 1 或 2 步!

問 : 給你地下共有幾樓,請問罐頭有幾種走法? 

輸入說明 :

每一行有一個正整數N ( 1 <= N <= 2147483647 ),代表總共有幾層

輸出說明 :

輸出罐頭有幾種走法!

 

歐! 對了! 因為答案可能很大, 請把答案 MOD 10007 

( MOD 代表取餘數 ) 

範例輸入 :

1
2
4

範例輸出 :

1
2
5

提示 :

 

如果AC 這題, 可以去挑戰  

d639. 企鵝村三兄弟penguin

 ( 改編自 d639 )

出處 :

(管理:stanley17112000)



作法 : 矩陣計算 by D&C

/**********************************************************************************/
/*  Problem: a272 "猥瑣罐頭下樓梯" from                                    */
/*  Language: C (812 Bytes)                                                       */
/*  Result: AC(0ms, 288KB) judge by this@ZeroJudge                                */
/*  Author: morris1028 at 2011-10-28 09:20:10                                     */
/**********************************************************************************/


#include<stdio.h>
typedef struct {
    int t[2][2];
}Matrix;
Matrix in, I2, o, init;
Matrix mult(Matrix x, Matrix  y) {
    Matrix t = o;
    int i, j, k;
    for(i = 0; i < 2; i++)
        for(j = 0; j < 2; j++)
            for(k = 0; k < 2; k++) {
                t.t[i][k] += x.t[i][j]*y.t[j][k] %10007;
                t.t[i][k] %= 10007;
            }
    return t;
}
void ans(int n) {
    Matrix x = init, y = in;
    while(n) {
        if(n&1) x = mult(x, y);
        y = mult(y, y);
        n /= 2;
    }
    printf("%d\n", x.t[0][0]);
}
main() {
    int n, a, b;
    for(a = 0; a < 2; a++)
        for(b = 0; b < 2; b++)
            in.t[a][b] = 0, I2.t[a][b] = 0,
            o.t[a][b] = 0, init.t[a][b] = 0;
    for(a = 0; a < 2; a++) I2.t[a][a] = 1;
    init.t[0][0] = 1;
    init.t[1][1] = 1;
    in.t[0][0] = in.t[0][1] = 1;
    in.t[1][0] = 1;
    while(scanf("%d", &n) == 1)
        ans(n);
    return 0;
}

台長: Morris
人氣(3,643) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:a273. 小朋友下樓梯
此分類上一篇:a271. 彩色蘿蔔

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文