设计一个数据结构存1996!
请设计一个数据结构以存储1996!
算法+源码(要注释)
再加一个小问题: 我现在212分(专家)何时升级?
问题点数:99、回复次数:8Top
1 楼richard_hu(华仔)回复于 2002-05-23 18:42:25 得分 15
1:1996是什么?
2:500Top
2 楼mylove0618(ADT)回复于 2002-05-23 18:42:34 得分 15
什么意思?int year=1996;不行吗?
第二个问题:500分升级。Top
3 楼LionEagle(LionEagle)回复于 2002-05-23 18:48:25 得分 25
他是说怎么计算 1996 的阶乘
定义一个任意位数整数相乘的函数,然后动态分配乘数、被乘数及结果所需的空间,然后依次计算乘法;或者一开始就为最后结果分配足够的内存,然后进行乘法Top
4 楼superzjx2000(承桴浮于海)回复于 2002-05-23 18:53:58 得分 0
这个我知道 用数组
请写算法(+程序)
不懂者只说领分则可 我会给分得 万勿扰乱大家视听Top
5 楼cteng(金艮)回复于 2002-05-23 18:53:58 得分 44
用char[]类型???
从末尾开始,先算末尾的零;
然后怎么办呢???
最后一个非零的也是可以求的;
其他的数位怎么做呢???
呵呵呵Top
6 楼LionEagle(LionEagle)回复于 2002-05-23 18:57:03 得分 0
给你一个大数相乘的程序,剩下的自己去做
#include "stdafx.h"
#include <string.h>
#include <iostream.h>
#include <assert.h>
#include <windows.h>
int Mul( int* pResult,int* pX,int* pY,int nXSize,int nYSize );
void Print( int* pX,int nSize );
void main(void)
{
int X[10000];
int Y[10000];
int R[20000];
int nSize;
int i;
int j;
X[0] = 0;
X[1] = 9;
Y[0] = 9;
for( i=0; i<10000; i++ )
{
X[i] = 9;
Y[i] = 9;
}
memset( R,0,20000 );
nSize = Mul( R,X,Y,10000,10000 );
Print( R,nSize );
}
void Print( int* pX,int nSize )
{
cout << endl;
for( int i=nSize-1; i>=0; i-- )
cout << pX[i];
cout << endl;
}
int Mul( int* pResult,int* pX,int* pY,int nXSize,int nYSize )
{
int nRSize = nXSize + nYSize;
//memset( pResult,0,nRSize*sizeof(*pResult) );
for( int i=0; i<nXSize; i++ )
for( int j=0; j<nYSize; ++j )
pResult[i+j] += pX[i]*pY[j];
// 调整进位
int* pTemp = pResult;
for( int k=0; k<nRSize; k++ )
{
int nTemp = *pTemp;
if( nTemp>9 )
{
int nHigh = nTemp / 10;
int nLow = nTemp % 10;
*pTemp = nTemp % 10;
pTemp++;
*pTemp += nTemp / 10;
}
}
// 返回结果的位数
if( pResult[nRSize-1]!=0 )
return nRSize;
else
return nRSize - 1;
}
Top
7 楼superzjx2000(承桴浮于海)回复于 2002-05-23 18:59:46 得分 0
开玩笑 写什么作业 我是大三的 data structure早就over啦
我只是有一次在老师那听过这个题 一直无解 (老师也没有)
望诸位有以教我Top
8 楼superzjx2000(承桴浮于海)回复于 2002-05-23 19:01:23 得分 0
强烈要求写算法Top




