144.⑨要写信(错排公式与高精度练习)
2016-04-09 09:13
211 查看
1697 ⑨要写信[/b]
时间限制: 1s
空间限制:
128000 KB
题目等级 :
黄金 Gold
题解
查看运行结果
题目描述 Description
琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。
由于以下三点原因……
琪露诺的符卡 冰符“Icicle
Fall”-Easy的弹幕有够蠢的,只要站在她的正前方就没任何弹幕会碰到你;
ZUN在《红魔乡》中介绍她时已经说她有点笨笨的了;
在ZUN放出《东方花映冢》的介绍图时,在图中把琪露诺放在了⑨的位置上,并以“⑨笨蛋”简单带过,从此“⑨”及“笨蛋”就成为她的别名了……
所以琪露诺便得到了“笨蛋”的别称。
某日,琪露诺又2了……
她写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
输入描述 Input
Description
信和信封的数量N。
输出描述 Output
Description
装错的可能性的数量。
样例输入 Sample
Input
输入样例1 2 |
输入样例2 4 |
Output
输出样例1 1 |
输出样例2 9 |
Hint
1≤N≤100
分类标签 Tags 点此展开
动态规划 序列型DP代码:
#include<
iostream >
using namespace
std;
#include<
cstdio >
#include<
cstring >
int
a[50001],b[50001],c[50001];
int
n,lena=0,lenb,lenc;
void XX(int
t)
{
int x=0;
lena=1;
while(lena<=lenb||lena<=lenc)
{
a[lena]=b[lena]+c[lena]+x;
x=a[lena]/10;
a[lena]%=10;
lena++;
}
a[lena]=x;
if(a[lena]==0)
lena--;
x=0;
for(int
i=1;i<=lena;++i)
{
a[i]*=t;
a[i]+=x;
x=a[i]/10;
a[i]%=10;
}
if(x!=0)
{
lena++;
a[lena]=x;
}
}
int main()
{
scanf("%d",&n);
c[1]=0;lenc=1;
b[1]=1;lenb=1;
for(int
i=3;i<=n;++i)
{
XX(i-1);
for(int
i=1;i<=lenb;++i)
c[i]=b[i];
lenc=lenb;
for(int
i=1;i<=lena;++i)
b[i]=a[i];
lenb=lena;
}
if(n==1||n==0)
{
printf("0\n");
return 0;
}
for(int
i=lenb;i>=1;--i)
printf("%d",b[i]);
return 0;
}
//sum[i]=(i-1)*(sum[i-1]+sum[i-2]);
相关文章推荐
- java之其它命令
- java之javadoc命令
- java之jar命令详解
- 用 JavaScript 对抗 DDOS 攻击
- hdoj 2955 Robberies【对立事件+0-1背包】
- 物联网与穿戴设备专题(1)
- BigInteger类型的解析_超详细解析
- 对于大学4年的反思(续),记我的ThoughtWorks面试
- android中 代码实现截图功能(静态+动态视频)
- LeetCode 121. Best Time to Buy and Sell Stock
- iOS单例的作用和使用
- java之classpath到底是什么
- 模拟实现 printf 函数
- hdoj 2546 饭卡 【转化思维+0-1背包】
- 操作系统中常用的调度算法
- 初始化顺序、==、AB交换
- 07_计算三位数中的所有“水仙花数”
- 时间复杂度和空间复杂度[数据结构]
- 数据的序列化,持久化,归档
- Emacs org-mode 预设模板与使用