5.6大整数运算2

a+b完整代码

#include 
#include  
 
struct bign{			//结构体 
	
	int d[10000];
	int len;
	bign(){
		memset(d,0,sizeof(d));
		len =0;
	}
}; 

bign change(char str[]){	//把整数化成bign 
	bign a;
	a.len = strlen(str);
	for(int i=0; i=0 ; i--){
		
		printf("%d",a.d[i])	;
		
	}
	printf("\n"); 
}

bool cmp(bign a, bign b){			//比较大小 
	if(a.len>b.len) return 1;
	else if(a.len =0 ;i--){
			if(a.d[i] >b.d[i]) return 1;
			else if(a.d[i] 

习题,求N的阶乘(N<=1000)

用简单的int存储不了,应用高精度乘法乘低精度方法做

#include 
#include 
//求N的阶乘(n<=1000)

struct bign{		//建一个结构体 
	int d[100000];		//若只有10000,则会显示答案错误 
	int len;
	
	bign(){
		memset(d,0,sizeof(d));
		len =0;
	}		
};

bign changeInt(int n){		//将int型化成大整数,用数组存
	bign a;
	while(n !=0){
		a.d[a.len++] = n%10;
		n = n/10;
	}
	return a;
}

bign multi(bign a, int b){

	bign  c;
	int carry =0;
	for(int i=0; i=0 ;i --){
		printf("%d" , a.d[i]); 
	} 
	printf("\n");
}


int main(){

	int n;
	while(scanf("%d" , &n) != EOF ){		
		bign x = changeInt(n);
		if( n == 0) 	
			printf("1\n");
		else{
			for(int i=1; i

你可能感兴趣的:(算法笔记)