POJ 2506 Tiling(递推+大整数加法)

时间:2023-03-08 22:07:39

http://poj.org/problem?id=2506

题意:
POJ 2506 Tiling(递推+大整数加法)

思路:
递推。a[i]=a[i-1]+2*a[i-2]。

计算的时候是大整数加法。错了好久,忘记考虑1了...晕倒。

 #include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std; int n;
char s[][]; void cacl(int i)
{
int k;
int len1 = strlen(s[i - ]);
int len2 = strlen(s[i - ]);
int flag = ;
for (k = ; k < len2; k++)
{
int x = s[i - ][k] - '' + * (s[i - ][k] - '');
if (flag)
{
x += flag;
flag = ;
}
if (x>)
{
flag = x / ;
x = x % ;
}
s[i][k] = x + '';
}
while (k < len1)
{
int x = s[i - ][k] - '';
if (flag)
{
x += flag;
flag = ;
}
if (x>)
{
flag = x / ;
x = x % ;
}
s[i][k] = x + '';
k++;
}
if (flag) s[i][k] = flag + '';
} void init()
{
s[][] = '';
s[][] = '';
s[][] = '';
for (int i = ; i <= ; i++)
cacl(i);
} int main()
{
init();
while (cin>>n)
{
int m = strlen(s[n]);
for (int i = m-; i >= ; i--)
cout << s[n][i];
cout << endl;
}
}