原题链接:蓝桥杯2013年第四届真题-公式求值
解题思路:
因为数据大,所以用了无损乘法和无损加法和无损求余,能得出答案,多大都行。
但是超极限了,希望有大佬帮帮忙....
注意事项:
参考代码:
#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分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复