- 297 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:56:50 ]
- >>291 なんとか1レスに納めた。修正ヨロ
#include<stdio.h> #define MB_UNIT 10000 #define MB_SIZE 18 typedef struct tag_mb_t{ long data[MB_SIZE]; }mb_t; mb_t mb_mul(mb_t a, int n){ long i, tmp, carry=0; for(i=0;i<MB_SIZE;i++){ tmp=a.data[i]*n+carry; a.data[i]=tmp%MB_UNIT; carry=tmp/MB_UNIT; } return a; } int mb_sprint(char buf[MB_SIZE*4+1], mb_t a){ char i, *p=buf; for(i=MB_SIZE-1;i>0 && a.data[i]==0;i--); p+=sprintf(p, "%ld", a.data[i]); for(i--;i>=0;i--) p+=sprintf(p, "%04ld", a.data[i]); return p-buf; } int main(void){ char buf[MB_SIZE*4+1], i, len53; mb_t x[54]={{{1}}}; for(i=1;i<=53;i++) x[i]=mb_mul(x[i-1], i); len53=mb_sprint(buf, x[53]); for(i=1;i<=53;i++){ mb_sprint(buf, x[i]); printf("%*s\n", len53, buf); } return 0; }
|

|