Hatena::Grouprubyist

たばさの RSSフィード

11/17(土) 2007

Factorial

| Factorial - たばさの を含むブックマーク はてなブックマーク - Factorial - たばさの

http://golf.shinh.org/p.rb?Factorial

スマートに解けない時はまた力技

/* factorial-3.c */
#define le 40
double d[le];
int age[le];
int k=10;
double max=1;

void reset()
{
	int i=1;
	for(;i<le;i++){d[i]=0;}
	d[0]=1;
}
int t()
{
	int i=le-1;
	for(;i>0;i--) {if(d[i]>0) return i;}
	return 0;
}
void pr()
{
	int i=0;
	int j=t();
	printf("%.0f",d[j]);
	if(j>0)for(i=j-1;i>=0;i--) {printf("%010.0f",d[i]);}
	puts("");
}
int f(int a)
{
	int i;
	for(i=0;i<le;i++){age[i]=0;}
	for(i=0;i<le-1;i++) {
		d[i]*=a;
		if(d[i]>=max){
			age[i+1]=(int)(d[i]/max);
			d[i]=d[i]-age[i+1]*max;
		}
	}
	for(i=0;i<le-1;i++) {d[i]+=age[i];}
	return (a==1?a:f(a-1));
}


main(){
	char z[5];
	int a;
	for(a=0;a<k;a++) max*=10;
	while(gets(z))
	{
		reset();
		sscanf(z,"%d",&a);
		if(a!=0) f(a);
		pr();
	}
}

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20071117
カレンダー
<< 2007/11 >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
archive Error : RSSが取得できませんでした。