思路:
这道题手动推一推,最后要把2和3的分开来算
c o d e code code
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long n, k;
long long xuan(long long n, long long m)
{
if(n<m)
return 0;
long long sum=1;
for(long long i=n-m+1; i<=n; i++)
sum*=i;
for(long long i=1; i<=m; i++)
sum/=i;
return sum;
}
int main()
{
freopen("color.in", "r", stdin);
freopen("color.out", "w", stdout);
scanf("%lld%lld", &n, &k);
if(n==1)
{
if(k==2)
printf("%lld", 2);
else
printf("%lld", xuan(k, 3)*1572858+xuan(k, 2)*2);
}
else if(n==2)
{
printf("%lld", xuan(k, 3)*3*2*2*2*2*2);
}
else if(n==3)
{
if(k==2)
printf("%lld", 2);
else
printf("%lld", xuan(k, 3)*(3*2*4-6)+xuan(k, 2)*2);
}
else if(n==4)
{
if(k==2)
printf("%lld", 2);
else
printf("%lld", xuan(k, 3)*(3*16*2*8*2*4*2*2-6)+xuan(k, 2)*2);
}
else if(n==5)
{
printf("%lld", xuan(k, 3)*3*2*2);
}
else if(n==6)
{
printf("%lld", xuan(k, 3)*3*2);
}
else if(n==7)
{
printf("%lld", xuan(k, 3)*(3*2*2*2*2*2));
}
else if(n==8)
{
if(k==2)
printf("%lld", 2);
else
printf("%lld", xuan(k, 3)*1073741820+xuan(k, 2)*2);
}
return 0;
}