⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1292.cpp

📁 zju_acm部分代码!都是自己做 有些事基本题目!题目还可以
💻 CPP
字号:
#include<stdio.h>  
#include<iostream>  
#include<string.h>
#include<math.h> 
using namespace std;
#define MAX 110 
#define LARGE 10//LARGER=10^(G-1)
#define G 2 //10^(G-1)进制
class BigInt
{
	public:
	  unsigned len;   
		 unsigned v[MAX];
	  int sign;//记录数值符号   
		int rec;//记录除数是否为0
	   BigInt();    
	   ~BigInt();
    /**************************
         重载了三个赋值运算
         调用各运算时要先由Mov()函数将他们转化存储到数组v里面
    **************************/
		 void Mov(BigInt& A);     
		void Mov(char*A);
		 void Mov(int A);  
		 BigInt Add(BigInt& A);    
         void Display();
};
BigInt::BigInt()
{
    len=1;
	int i;
    for( i=0;i<MAX;i++){      v[i]=0;   }
}
BigInt::~BigInt(){   }

void BigInt::Mov(int A)
{
     v[0]=A;   int i,k;    k=A;    i=0;
    while(k>0)
	{
         v[i]=k-k/LARGE*LARGE;
         k=k/LARGE;   
		 i++;
    }
    len=i;
}
void BigInt::Mov(BigInt& A)
{
    len=A.len;
	int i;
    for( i=0;i<len;i++){
         v[i]=A.v[i];
     }
    while(i<MAX){
         v[i]=0;      i++;    }
}
void BigInt::Mov(char *A)
{
    int A_len=strlen(A);
    int k,i,j,t;
    len=A_len/(G-1);
    if(A_len%(G-1))len++;
    for(i=0,j=A_len-1;i<len&&j>=0;i++)
	{
         k=1;      t=1;
        while(j>=0&&k<G)
		{
             v[i]+=(A[j]-'0')*t;
             t*=10;          j--;          k++;       
		}
     }
}
BigInt BigInt::Add(BigInt& A)
{
     BigInt X;   
	 X.Mov(*this);
     int i,sum=0;   
	int carry=0;
    if(X.len<A.len)
		 X.len=A.len;   

    for( i=0;i<=X.len;i++)
	{
         sum=A.v[i];      
		 sum=sum+X.v[i]+carry;
         X.v[i]=sum%LARGE;    //10^(G-1)进制      
		 carry=sum/LARGE;
    }

    if(X.v[X.len])
	{   X.len++;   }

     return X;
}

void BigInt::Display()
{
     for(int i=len-1;i>=0;i--)
	 {
         printf("%d",v[i]);//printf("%0(G-1)d",v[i]);当G=3时为100进制,则printf("%02d",v[i];
     }
     printf("\n");
}


int main(){
     char p[MAX];          
	 int N,j=0;
	 memset(p, '\0', sizeof(p));
	 scanf("%d",&N);
	while(j<N)
	{
		int i=0;
		BigInt c;
		while( cin >> p&& !(p[0]=='0'&&p[1]=='\0') )
		{
			
			i++;
			BigInt a; 
			if(p[0]=='0')
				a.Mov(&p[1]);
			else a.Mov(p);
			memset(p, '\0', sizeof(p));
			if(i!=1)
				c = c.Add(a);
			else 
				c=a;

		}
		c.Display();
		if(j!=N-1)
			 printf("\n");
		j++;
	}
     return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -