举火燎天
来源:互联网 发布:设计家具的软件 编辑:程序博客网 时间:2024/05/22 06:57
问题描述 Problem Description
征夷王将越南(南夷) 攻下来之后, 决定用
输入描述 Input Description
输入一行两个正整数
输出描述 Output Description
输出一行一个正整数, 代表方案总数。
输入样例 Sample Input
3 4
输出样例 Sample Output
24
数据范围 Data Size
对于
分析 I Think
先说特殊情况,当
再来普遍情况。记
代码 Code
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const LL Mod = 100000000;struct bign{ LL a[100]; int len; bign(LL x = 0){ this->clear(); a[0] = x; } bign operator + (const bign &h){ bign ans; ans.len = max(len,h.len)+1; for(int i=0;i<ans.len;++i){ ans.a[i] = ans.a[i]+h.a[i]+a[i]; ans.a[i+1] += ans.a[i]/Mod; ans.a[i] %= Mod; } if(!ans.a[ans.len-1]) --ans.len; return ans; } bign operator * (const bign &h){ bign ans; ans.len = len+h.len; for(int i=0;i<len;++i) for(int j=0;j<h.len;++j) ans.a[i+j] = a[i]*h.a[j]; for(int i=0;i<ans.len;++i){ ans.a[i+1] += ans.a[i]/Mod; ans.a[i] %= Mod; } if(!ans.a[ans.len-1]) --ans.len; return ans; } void display(){ printf("%lld",a[len-1]); for(int i=len-2;i>=0;--i) printf("%08lld",a[i]); } void clear(){ memset(a,0,sizeof a); len = 1; }}f[120][2],s1,s2;LL n,m;int main(){ scanf("%lld%lld",&n,&m); if(n == 1){ printf("%lld",m); return 0; } f[1][1].a[0] = m; s1.a[0] = m-1; s2.a[0] = m-2; for(int i=2;i<=n;++i){ f[i][1] = f[i-1][0]; f[i][0] = f[i-1][0]*s2+f[i-1][1]*s1; } f[n][0].display(); return 0;}
0 0
- 举火燎天
- 举火燎天
- 倌燎每亲弛固约崖问卓酵共裂诳梁
- 如何理员呢?注射今天燎
- 天
- 天
- 天
- 天。。。
- 天
- 1天?3天?
- 第四天--第六天
- 56天?59天 ?
- 第二天
- 第二天
- 第二天
- 阴雨天
- 第二天
- 第二天
- Java NIO使用及原理分析(一)
- oracle字符串拼接
- C++动态分配指针数组
- 《java设计模式》之责任链模式
- 通俗理解卷积神经网络
- 举火燎天
- android 布局优化(二),merge标签
- Android vector 标签 pathData
- django中的__unicode__()
- ubuntu+windows8出现 An error occurred while mounting
- maven下载源码
- 单变量求解的Java实现及其与Excel的Goal Seek性能比较(Java完胜)
- Repo 详解
- 欢迎使用CSDN-markdown编辑器