栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

大数加法(append可恶)

C/C++/C# 更新时间:发布时间: 百科书网 趣学号

有carry和temp就可以。

append(5,‘0’);啊!!!前个后!!不是append('0',5);

题目:

数列A满足An = An-1 + An-2 + An-3, n >= 3

编写程序,给定A0, A1 和 A2, 计算A99

Input

输入包含多行数据

每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 32767)
数据以EOF结束

Output

对于输入的每一行输出A99的值

Sample Input

1 1 1

Sample Output

69087442470169316923566147
#include 
#include 
#include 
using namespace std;
string BigNumber(string a, string b)
{
    int la = a.length();
    int lb = b.length();
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    if (la > lb)
        b.append(la - lb, '0');
    else if (lb > la)
        a.append(lb - la, '0');
    int carry = 0;
    for (int i = 0; i < a.length(); i++)
    {
        int temp = carry + a[i] - '0' + b[i] - '0';
        a[i] = temp % 10 + '0';
        carry = temp / 10;
    }
    if (carry)
    {
        a.append(1, '1');
    }
    int k;
    for (int i = a.length() - 1; i >= 0; i--)
        if (a[i] != '0')
        {
            k = i;
            break;
        }
    a = a.substr(0, k + 1);
    reverse(a.begin(), a.end());
    return a;
}
int main()
{
    string s[101];
    while (cin>>s[1]>>s[2]>>s[3])
    {
        for (int i = 4; i <= 100; i++)
        {
            s[i] = BigNumber(BigNumber(s[i - 3], s[i - 2]), s[i - 1]);
        }
        cout << s[100] << endl;
    }
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/296293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号