解题思路:
因为数据大,所以用了无损乘法和无损加法和无损求余,能得出答案,多大都行。
但是超极限了,希望有大佬帮帮忙....
注意事项:
参考代码:
#include<stdio.h> #include<string.h> char sum[2000],zsum[2000]; char mulfun(long long m,long long n) { int a[1000],b[1000],c[2000]; int i=0,j=0,x,y; while(m){c[i++]=m%10;m=m/10;}x=i;i--; while(i>=0)a[j++]=c[i--]; i=0;j=0; while(n){c[i++]=n%10;n=n/10;}y=i;i--; while(i>=0)b[j++]=c[i--]; memset(c,0,sizeof(c)); for(i=0;i<x;i++) for(j=0;j<y;j++) c[i+j]+=a[i]*b[j]; for(i=x+y-1;i>0;i--) { c[i-1]=c[i-1]+c[i]/10; c[i]=c[i]%10; } for(i=0;i<x+y-1;i++)sum[i]=c[i]+48; return 0; } char addfun(char a[],char b[]) { char c[10000],*m=a,*n=b,*k,*k1,t; int s=0,i=0,w=0,j=0; while(*m)m++;m--; while(*n)n++;n--; while(m>=a&&n>=b) { s=*m+*n+w-48-48; c[i++]=s%10+48; w=s/10; m--;n--; } if(strlen(a)>strlen(b)){k=m;k1=a;} else {k=n;k1=b;} while(k>=k1) { c[i++]=(*k-48+w)%10+48; w=(*k-48+w)/10; k--; } if(w!=0)c[i]=w+48; else i--; while(i>=0)zsum[j++]=c[i--]; return 0; } long long assfun(long long n,long long m) { if(m==0||n==m)return 1; return assfun(n-1,m-1)+assfun(n-1,m); } long long fafun(long long i,long long k) { if(k==1)return i; return i*fafun(i,k-1); } long long remainde(char s[],long long m) { int a[10000]; long i,j,k,r,s1; s1=strlen(s); for(i=0;i<s1;i++) a[i]=s[i]-48; for(i=0,r=0;i<s1;i++) { a[i]=a[i]+r*10; r=a[i]%m; a[i]=a[i]/m; } printf("%lld",r); } int main() { long long a,b,c,n,m,i=0,k,k1,k2,k3,s; scanf("%ld%ld%ld",&n,&m,&k); k1=assfun(n,m); for(i=0;i<=n;i++) { k2=assfun(n,i); k3=fafun(i,k); mulfun(k2,k1*k3); addfun(zsum,sum); memset(sum,0,sizeof(sum)); } remainde(zsum,999101); return 0; }
0.0分
5 人评分
不容易系列2 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:824 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:735 |
哥德巴赫曾猜测 (C语言代码)浏览:2317 |
蚂蚁感冒 (C语言代码)浏览:1319 |
敲七 (C语言代码)浏览:2700 |
盐水的故事 (C语言代码)浏览:1524 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:485 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:521 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:604 |