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;
}

转载于:https://www.cnblogs.com/qijinbiao/archive/2011/08/09/2131988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值