發信人Ying-Chun Liu <PaulLiu.bbs@bbs.cis.nctu.edu.tw>,
看板Programming
標 題Re: [問題] 用C語言寫出200階乘...
發信站TTN News Server (Tue Jan 3 05:15:35 2006)
轉信站ptt!ctu-reader!Spring!news.nctu!netnews.eranet.net!news.ttn.net!not-fo
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
thinking in java wrote:
> ※ 引述《loveidle (P幣又不能當飯吃)》之銘言:
> : 請問一下有人會寫嗎@@?
> : 急需...
> : 麻煩各位指教摟...
> : 感激不盡!
>
>
> #include <gmp.h>
> #include <stdio.h>
>
> int main() {
> int i;
> char *ret;
> mpz_t result;
> mpz_init_set_ui( result, 1 );
> for ( i = 1;i <= 200;i++ ) {
> mpz_mul_ui( result, result, i );
> }
> ret = mpz_get_str( ret, 10, result );
> puts( ret );
> mpz_clear( result );
> return 0;
> }
>
> 寫完了, 給點心(伸)
>
> --
> ※ 發信站: 批踢踢實業坊(ptt.cc)
> ◆ From: 163.26.34.20
>
#include <stdio.h>
int main()
{
int i,j,a[2048],N=200;
memset(a,0,sizeof(a));
a[0]=1;
for (i=1 ; i<=N ; i++)
{
for (j=0 ; j<sizeof(a)/sizeof(a[0]) ; j++)
a[j]*=i;
for (j=0 ; j+1<sizeof(a)/sizeof(a[0]) ; j++)
{ a[j+1]+=a[j]/10; a[j]%=10; }
}
for (i=sizeof(a)/sizeof(a[0])-1 ; i>=0 ; i--) if (a[i]!=0) break;
for ( ; i>=0 ; i--) printf("%d",a[i]); printf("\n");
}
不用gmp的暴力版本...
- --
PaulLiu(劉穎駿)
E-mail address:PaulLiu.bbs@bbs.cis.nctu.edu.tw
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with Debian -
http://enigmail.mozdev.org
iD8DBQFDuSd3oQj7xTSiaUYRApHpAJwIyzvJncU3su6ykIhq1PO56UWDoQCePB1U
PkdoTVJ1XOaHvOzWCltBoAo=
=bn2+
-----END PGP SIGNATURE-----
推 linbn:memset()是啥? 01/02 21:41
→ qrtt1:該man的時就,就要man一下 01/03 09:33