清华计算机复试机试题,清华06"/>
清华计算机复试机试题,清华06
清华06-09计算机复试机试题.doc
THU0601 大数阶乘2010年02月07日 星期日 17:27 清华06计算机复试机试题1 试题一(5个测试数据,每个5分,共25分)求N的阶乘变量条件:N为正整数,且N≤1000。运行时限:1秒/测试数据。输入格式:仅一个数,N。输出格式:仅一个数,N!的结果。可执行文件:program1.exe 样例一:Input.txt4Output.txt24样例二:Input.txt15Output.txt1307674368000//THU1 大?数?阶?乘?#include "stdio.h"#include "string.h"#include "time.h"//using namespace std;int main(){ clock_t start,end; double duration; start=clock(); FILE *fr,*fw; fr=fopen("Input.txt","r"); if(fr==NULL) { printf("ERROR in Input.txt"); return 0; } fw=fopen("Output.txt","w"); if(fw==NULL) { printf("ERROR in Output.txt"); return 0; } long r[1000],t,add; int n,i,j,len;//,w; while(fscanf(fr,"%d",&n)!=EOF) { memset(r,0,sizeof(r)); r[0]=1; len=0; for(i=2;i<=n;i++) { add=0; for(j=0;j<=len;j++) { t=r[j]*i+add; r[j]=t%10000; add=t/10000; } if(add) r[++len]=add; } // w=m*4+log(r[len])+1; fprintf(fw,"%ld",r[len]); for(i=len-1;i>=0;i--) fprintf(fw,"%4.4ld",r[i]); fprintf(fw,"\n"); } end=clock(); duration=(double)(end-start)/CLOCKS_PER_SEC * 1000; printf("%lf ms\n", duration); return 0;}Input.txt:12201006661000Output.txt:4790016002432902008176640000933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000001010632056840781493390822708129876451757582398324145411340420807357413802103697022989202806801491012040989802203557527039339704057130729302834542423840165856428740661530297972410682828699397176884342513509493787480774903493389255262878341761883261899426484944657161693131380311117619573051526423320389641805410816067607893067483259816815364609828668662748110385603657973284604842078094141556427708745345100598829488472505949071967727270911965060885209294340665506480226426083357901503097781
更多推荐
清华计算机复试机试题,清华06
发布评论