Astar Round1 1002 Problem B

来源:互联网 发布:淘宝门店库是什么意思 编辑:程序博客网 时间:2024/05/08 07:02

全1序列这道题,就是斐波那契大数。

用了一个大数模板。

#include <iostream>#include <string>#include <stdio.h>#include <stdlib.h>using namespace std;string &_string_add_string (const string &a, const string &b, string &res) {    int sum_value = 0, add_bit = 0;    const int alen = a.length(), blen = b.length();    res = "0" + (alen > blen ? a : b);    for (int i = alen-1, j = blen-1, k = res.length() - 1;            i >= 0 || j >= 0 || add_bit > 0;            --i, --j, --k) {        sum_value = (i>=0 ? a[i]-48: 0) + (j>=0 ? b[j]-48: 0) + add_bit;        add_bit = sum_value / 10;        res[k] = sum_value%10 + '0';    }    if (res[0] == '0') { res = res.substr (1, res.length() - 1); }    return res;}string fib (int n) {    if (0 == n) { return "0"; }    if (1 == n || 2 == n) { return "1"; }    string a = "1", b = "1", ret = "0";    for (int i = 3; i <= n; ++i) {        _string_add_string (a, b, ret);        b = a;        a = ret;    }    return ret;}int main (void) {    int n;    string a, b, c;    string ret;    while (scanf ("%d", &n) != EOF) {        printf ("%s\n", fib (n+1).c_str() );    }    return 0;}

0 0
原创粉丝点击