poj 2506 递推+大数
发布时间:2020-12-14 02:23:21 所属栏目:大数据 来源:网络整理
导读:题意:用2*1或者2*2的砖铺2*n有多少种铺法。 思路:容易知道递推式为f[n] = 2*f[n-2]+f[n-1]。用数组表示即可。 #include cstdio#include cstring#include algorithm#include cmath#include queue#include cstdlibusing namespace std;#define clc(s,t) mems
题意:用2*1或者2*2的砖铺2*n有多少种铺法。 思路:容易知道递推式为f[n] = 2*f[n-2]+f[n-1]。用数组表示即可。 #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <cstdlib> using namespace std; #define clc(s,t) memset(s,t,sizeof(s)) #define INF 0x3fffffff #define N 250 int s[260][1000]; int n; void create(){ int i,j; clc(s,0); s[0][0] = s[1][0] = 1; for(i = 2;i<=250;i++){ for(j = 0;j<995;j++) s[i][j] = s[i-1][j]; for(j = 0;j<995;j++){ s[i][j] += s[i-2][j]*2; s[i][j+1] += s[i][j]/10; s[i][j] %= 10; } } } void print(int s[1000]){ int i; for(i = 995;!s[i];i--) ; for(;i>=0;i--) printf("%d",s[i]); putchar('n'); } int main(){ create(); while(scanf("%d",&n) != EOF) print(s[n]); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |