不爽 主要溢出 递归变化
2015-10-18 23:02
239 查看
#include<stdio.h>
int main()
{
int N,M,C,i,t;
scanf("%d",&C);
for(i=1;i<=C;i++)
{
scanf("%d%d",&N,&M);
long long f[21]={0,0,1},a,b,c;
for(t=3;t<=M;t++)
{
f[t]=(t-1)*(f[t-1]+f[t-2]);
}
for(a=b=t=1;t<=M;N--,t++)
{
a=a*N;b=b*t;
}
c=a/b;
f[M]=f[M]*c;
printf("%I64d\n",f[M]);
}
return 0;
}
这道2049题想通了就还好,拆分为两部走,一是从N个数里选M个,而是M个数排错;这样问题就简化很多了,不过坑爹的是在a/b求排列组合的时候,若a,b为整型则会发生溢出,超过四个字节,主要使用longlong
int main()
{
int N,M,C,i,t;
scanf("%d",&C);
for(i=1;i<=C;i++)
{
scanf("%d%d",&N,&M);
long long f[21]={0,0,1},a,b,c;
for(t=3;t<=M;t++)
{
f[t]=(t-1)*(f[t-1]+f[t-2]);
}
for(a=b=t=1;t<=M;N--,t++)
{
a=a*N;b=b*t;
}
c=a/b;
f[M]=f[M]*c;
printf("%I64d\n",f[M]);
}
return 0;
}
这道2049题想通了就还好,拆分为两部走,一是从N个数里选M个,而是M个数排错;这样问题就简化很多了,不过坑爹的是在a/b求排列组合的时候,若a,b为整型则会发生溢出,超过四个字节,主要使用longlong
相关文章推荐
- java程序员基本技能
- 第六章软件测试过程及测试过程管理
- 推荐算法实战
- git源码中的Makefile
- 零基础学python-19.12 总结列表解析与字典解析
- OpenCV—固定阈值门限分割cv::threshold
- Swing
- tcp之keepalive
- 一个利用sql注入上传shell的姿势
- 异常处理
- Til the Cows Come Home(链式前向星+spfa)
- match pattern
- 第五章软件缺陷管理
- 20135304刘世鹏——信息安全系统设计基础第五周学习总结
- 多态和抽象
- 内部类
- java内存区域各部分内容及内存溢出介绍
- 第四章软件测试分类及分级
- C#面向对象设计模式纵横谈——3.Abstract Factory 抽象工厂(创建型模式)
- 配置安装Apache主服务发生错误:"(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager, perh······ "