• 杭电 Problem1865 1string


    1sting

    Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 4983    Accepted Submission(s): 1847


    Problem Description
    You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total number of result you can get.
     

    Input
    The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.
     

    Output
    The output contain n lines, each line output the number of result you can get .
     

    Sample Input
    3 1 11 11111
     

    Sample Output
    1 2 8
     

    Author
    z.jt
     

    Source
     

    这题是斐波那契的运用,但是fib200会超掉储存,所以用大数的方式储存。

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    #include <stack>
    #include <iostream>
    #define MAX_N   205
    #define MAX(a, b) (a > b)? a: b
    #define MIN(a, b) (a < b)? a: b
    using namespace std;
    
    int fib[MAX_N][MAX_N];
    void init() {
        fib[1][0] = 1, fib[2][0] = 2;
        for (int i = 3; i < MAX_N; i++) {
            int q = 0, p = 0;
            for (int j = 0; j < MAX_N; j++) {
                q = fib[i - 1][j] + fib[i - 2][j] + p;
                fib[i][j] = q%10;
                p = q / 10;
            }
        }
    }
    int main() {
        int t;
        init();
        char s[MAX_N];
        scanf("%d", &t);
        while (t--) {
            scanf("%s", &s);
            int len = strlen(s);
            int i;
            for (i = 200; i >= 0 ; i--) {
                if (fib[len][i] != 0) {
                    break;
                }
            }
            for (int j = i; j >= 0 ; j--) {
                printf("%d", fib[len][j]);
            }
            printf("
    ");
        }
        return 0;
    }
    


  • 相关阅读:
    python之路3-元组、列表、字典、集合
    python之路2-字符串操作
    Python之路1-变量、数据类型、循环语法
    config模块
    os模块
    logging模块
    控制台报错定位问题所在
    time模块
    random模块
    列表生成
  • 原文地址:https://www.cnblogs.com/cniwoq/p/6770943.html
Copyright © 2020-2023  润新知