• poj3982~1503大数问题


    poj3982
    数列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 <iostream>
    #include
    <string>
    using namespace std;
    #define SIZE 105
    string s1[SIZE];
    string s;
    int sum[SIZE]={0};
    string add(string s1,string s2,string s3)
    {
    int i,j;
    for(i=0;i<SIZE;i++)
    sum[i]
    =0;//清零
    for(j=SIZE-1,i=s1.size()-1;i>=0;--i)//加s1
    sum[j--]+=(s1[i]-'0');

    for(j=SIZE-1,i=s2.size()-1;i>=0;--i)//加s2
    sum[j--]+=(s2[i]-'0');

    for(j=SIZE-1,i=s3.size()-1;i>=0;--i)//加s3
    sum[j--]+=(s3[i]-'0');

    j
    =0;//处理时去除前面的零
    while(!sum[j])
    ++j;
    for(i=SIZE-1;i>=j;i--)//处理进位
    {
    sum[i
    -1]+=sum[i]/10;
    sum[i]
    =sum[i]%10;
    }

    i
    =0;//输出前去除前面的零
    while(!sum[i])
    ++i;
    i
    ++;
    int k=i;
    string t(SIZE-i+1,'0');
    for(;i<=SIZE;i++)
    t[i
    -k]=sum[i-1]+'0';
    return t;
    }
    int main()
    {
    int i;
    while(cin>>s1[0]&&s1[0].compare("EOF"))//while(scanf("%s%s%s",s1[0],s1[1],s1[2])!=EOF)
    { cin>>s1[1]>>s1[2];
    for(i=0;i<97;i++)
    s1[i
    +3]=add(s1[i],s1[i+1],s1[i+2]);
    cout
    <<s1[99]<<endl;
    }
    return 0;
    }


    poj1503

    Sample Input

    123456789012345678901234567890
    123456789012345678901234567890
    123456789012345678901234567890
    0

    Sample Output

    370370367037037036703703703670
    #include <iostream>
    #include
    <string>
    using namespace std;
    #define SIZE 105
    string s;
    int sum[SIZE]={0};
    int main()
    {
    int i,j;
    while(cin>>s&&s.compare("0"))
    {

    for(j=SIZE-1,i=s.size()-1;i>=0;--i)
    sum[j
    --]+=(s[i]-'0');
    }
    j
    =0;//处理时去除前面的零
    while(!sum[j])
    ++j;

    if(j>=SIZE)
    printf(
    "0");
    for(i=SIZE-1;i>=j;i--)//处理进位
    {
    sum[i
    -1]+=sum[i]/10;
    sum[i]
    =sum[i]%10;
    }

    i
    =0;//输出前去除前面的零
    while(!sum[i])
    ++i;

    for(;i<SIZE;i++)
    cout
    <<sum[i];
    cout
    <<endl;
    }
  • 相关阅读:
    如何快速把 Vue 项目升级到 webpack3
    10分钟学会ES7+ES8
    数组的32场演唱会
    你做的拷贝是真的深拷贝吗
    浅谈CSS模块化
    CORS跨域资源共享你该知道的事儿
    像VUE一样写微信小程序-深入研究wepy框架
    小型Web页打包优化(下)
    PT与PX区别
    px、pt和em的区别
  • 原文地址:https://www.cnblogs.com/qijinbiao/p/2131988.html
Copyright © 2020-2023  润新知