#include
int main()
{
long int a,b,c=1,m,n,o,i,sum=0;
for(i=1;i<=30;i++)//这里你不对了吧,你是想求1一直乘第30吧,这个longint 存不下的,你输出一下C看看就知道了
c=c*i;
for(a=0;a<=30;a++)
for(b=0;b<=10;b++)
{
if(a+3*b==30&&a!=0&&b!=0)
{
for(m=1,i=1;i<=a;i++)
m=m*i;
for(n=1,i=1;i<=b;i++)
n=n*i;
o=c/(m*n);
sum=sum+o;
printf("a=%ld b=%ld total=%ld\n",a,b,o);
}
if(a==0&&b==10)
printf("a=0 b=10 total=1\n");
if(b==0&&a==30)
printf("a=30 b=0 total=1");
}
printf("\n%ld",sum);
return 0;
}
没有问题
输出结果为:a=0 b=10 total=1
a=3 b=9 total=647
a=6 b=8 total=48
a=9 b=7 total=0
a=12 b=6 total=1
a=15 b=5 total=-1457
a=18 b=4 total=-16
a=21 b=3 total=0
a=24 b=2 total=0
a=27 b=1 total=0
a=30 b=0 total=1
-777