输入不超过1000的正整数n,输出n!的精度结果。
样例输入:30
样例输出:265252859812191058636308480000000
#include#include using namespace std;const int maxn = 3000;int f[maxn];void out(int f[]){ int i, j; for(j = maxn - 1; j >= 0; --j) if(f[j]) break; for(i = j; i >= 0; --i) cout << f[i]; cout << endl;}void fact(int f[], int n){ out(f); memset(f, 0, maxn); //memset(f, 0, sizeof(*f)); //次数默认转化为指针,而非数组了 out(f); f[0] = 1; for(int i = 2; i <= n; ++i) { int c = 0; for(int j = 0; j < maxn; ++j) { int t = f[j]*i + c; c = t / 10; f[j] = t % 10; } }}int main(){ int n; while(cin >> n) { //memset(f, 0, sizeof(f)); fact(f, n); out(f); } return 0;}
遇到一些问题:sizeof操作符的用法。百度百科上解释的很详细:
posted on 2012-12-27 20:08 阅读( ...) 评论( ...)