杭电acm2049(http://acm.hdu.edu.cn/showproblem.php?pid=2049)
全错排列也用上了,调试的时候为什么老错#include<stdio.h>#include<math.h>intf(__int64);intmain(){__int64n,...
全错排列也用上了,调试的时候为什么老错
#include<stdio.h>
#include<math.h>
int f(__int64);
int main()
{
__int64 n,c,m,i,j,t;
while(scanf("%I64d",&c)!=EOF)
{
for(i=1;i<=c;i++)
{
t=0;
scanf("%I64d%I64d",&n,&m);
for(j=1;j<=m;j++)
t+=f(m)*pow((-1),j)/f(j);(这里是求全错排列)
t+=f(m);
t*=f(n)/(f(m)*f(n-m));
printf("%I64d\n",t);
}
}
return 0;
}
int f(__int64 x)
{
if(x==1||x==0) return 1;
else return x*f(x-1);
} 展开
#include<stdio.h>
#include<math.h>
int f(__int64);
int main()
{
__int64 n,c,m,i,j,t;
while(scanf("%I64d",&c)!=EOF)
{
for(i=1;i<=c;i++)
{
t=0;
scanf("%I64d%I64d",&n,&m);
for(j=1;j<=m;j++)
t+=f(m)*pow((-1),j)/f(j);(这里是求全错排列)
t+=f(m);
t*=f(n)/(f(m)*f(n-m));
printf("%I64d\n",t);
}
}
return 0;
}
int f(__int64 x)
{
if(x==1||x==0) return 1;
else return x*f(x-1);
} 展开
展开全部
//这道应该是找出数学规律就好了嘛,以前A过的代码给你参考下
#include<iostream>
using namespace std;
int main()
{
int i,n;
__int64 s[21];
s[1]=0;
s[2]=1;
s[3]=2;
for(i=4;i<=20;i++)s[i]=(i-1)*(s[i-1]+s[i-2]);
cin>>n;
while(n-->0)
{
int a,b;
__int64 c=1,d=1,e=1;
cin>>a>>b;
for(i=a;i>0;i--)c*=i;
for(i=b;i>0;i--)d*=i;
for(i=a-b;i>0;i--)e*=i;
cout<<c/(d*e)*s[b]<<endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int i,n;
__int64 s[21];
s[1]=0;
s[2]=1;
s[3]=2;
for(i=4;i<=20;i++)s[i]=(i-1)*(s[i-1]+s[i-2]);
cin>>n;
while(n-->0)
{
int a,b;
__int64 c=1,d=1,e=1;
cin>>a>>b;
for(i=a;i>0;i--)c*=i;
for(i=b;i>0;i--)d*=i;
for(i=a-b;i>0;i--)e*=i;
cout<<c/(d*e)*s[b]<<endl;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询