HDU-2049 不容易系列之四(考新郎)
2017-09-18 18:02
274 查看
#include<iostream> using namespace std; int main() { long long k[25]={0,0,1},g[29];///数组也是一样的long long! int t; g[0]=1;g[1]=1;g[2]=2; long long a,b,c,n=1,m=1,z;///数据比较大,所以要用long long! cin>>t; for(int i=3;i<25;i++)///计算全错排 { k[i]=(i-1)*(k[i-1]+k[i-2]); g[i]=i*g[i-1]; } while(t--) {///我的这种计算方式也是没毛病的,但没有用数组把各个数的阶乘存起来的方式高明 int p; cin>>a>>b; for(int j=b;j>0;j--)///两个for循环整体计算从a个数中取出b个数有多少种方式 { n=n*(a); a--; }///先计算了排列数,再用排列数除以b的阶乘! for(int y=b;y>0;y--) { m=m*y; } cout<<n<<' '<<m<<endl;///看到底是n算错了还是m错了! z=n/m; cout<<z<<endl;///因为刚开始的时候计算方式上的错误导致计算结果错误;所以就在上面输出了一下n和m! cout<<z*k[b]<<endl; z=1;n=1;m=1; //cout<<k[b]*(g[a]/g[b]/g[a-b])<<endl; }///g[a]/g[b]/g[a-b]就是连除,一开始我竟然没有看出来! return 0; }
知识点总结:
组合数学加全错排。
心得体会:
一定要考虑数据范围,记得用long long!!!
相关文章推荐
- hdu2049 不容易系列之(4)——考新郎
- hdu-oj 2049 不容易系列之(4)——考新郎
- hdu 2049 不容易系列之(4)——考新郎
- HDU 2049 不容易系列之(4)——考新郎
- hdu 2049 不容易系列之(4)——考新郎
- HDU 2049 不容易系列之(4)——考新郎
- hdu 2049 不容易系列之(4)——考新郎
- HDU 2049 不容易系列之(4)——考新郎
- hdu 2049 不容易系列之(4)——考新郎
- HDU 2049 不容易系列之(4)——考新郎 (错排公式+递归)
- HDU 2049 不容易系列之(4)——考新郎(错排+组合数学)
- HDU 2049 - 不容易系列之(4)——考新郎
- hdu2049:不容易系列之(4)——考新郎 之错排公式
- hdu 2049 不容易系列之(4)——考新郎
- 不容易系列之(4)——考新郎 HDU - 2049 错排
- hdu 2049 不容易系列之(4)——考新郎 (错排递推)
- hdu 2049 不容易系列之(4)——考新郎
- HDU 2049 不容易系列之(4)——考新郎
- HDU 2049-不容易系列之(4)——考新郎
- hdu 2049 不容易系列之(4)——考新郎(错排)