亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hugenumber.cpp

?? 一個較完備的HugeNumber類
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;

#include"HugeNumber.h"

HugeNumber::HugeNumber( int s )
: size ( s )
{
	hugeNumber = new int [ size + 1 ];
	floatPosition = size;
	precision = 0;

	for ( int i = 0; i <= size; i ++ )
		hugeNumber[ i ] = 0;
}

HugeNumber::HugeNumber( int * number, int s, int pos, int positiveNegtive, int precisionN )
: size ( s ), precision( precisionN ) 
{
	hugeNumber = new int [ size + 1 ];
	
	hugeNumber[ 0 ] = positiveNegtive;

	for ( int i = size - 1; i >= 0; i -- )
		hugeNumber[ i + 1 ] = number[ i ];

	floatPosition = pos;
}

HugeNumber::HugeNumber( const HugeNumber &huge )
{
	size = huge.size;
	floatPosition = huge.floatPosition;
	precision = huge.precision;

	delete []hugeNumber;
	hugeNumber = new int [ size + 1 ];

	for ( int i = size; i >= 0; i -- )
		hugeNumber[ i ] = huge.hugeNumber[ i ];
}


HugeNumber::~HugeNumber()
{
	delete []hugeNumber;
}

HugeNumber & HugeNumber::operator = ( const HugeNumber & huge )
{
	if ( &huge == this )
		return *this;

	size = huge.size;
	floatPosition = huge.floatPosition;
	precision = huge.precision;

	delete []hugeNumber;
	hugeNumber = new int [ size + 1 ];

	for ( int i = size; i >= 0; i -- )
		hugeNumber[ i ] = huge.hugeNumber[ i ];
 
	return *this;
}

bool HugeNumber::operator > ( const HugeNumber &huge )
{
	if ( floatPosition > huge.floatPosition )
		return true;
	else if ( floatPosition < huge.floatPosition )
		return false;
	else
	{
		int size_;
		int *a = NULL, *b = NULL;
		if ( size >= huge.size )
		{
			size_ = size;
			a = new int [ size_ + 1 ];
			b = new int [ size_ + 1 ];

			copy( a, hugeNumber, size_ + 1 );

			for ( int i = 0; i <= size_; i ++ )
				if ( i <= huge.size )
					b[ i ] = huge.hugeNumber[ i ];
				else
					b[ i ] = 0;
		}
		else
		{
			size_ = huge.size;
			a = new int [ size_ + 1 ];
			b = new int [ size_ + 1 ];

			for ( int j = 0; j <= size_; j ++ )
				if ( j <= size )
					a[ j ] = hugeNumber[ j ];
				else
					a[ j ] = 0;

			copy( b, huge.hugeNumber, size_ + 1);
		}

		for ( int k = 1; k <= size_; )
			if ( a[ k ] > b[ k ] )
				return true;
			else if ( a[ k ] < b[ k ] )
				return false;
			else
				k ++;

		return false;
	}
}

void HugeNumber::print()
{
	if ( hugeNumber[ 0 ] )
		cout << '-';
	for ( int i = 1; i <= size; i ++ )
	{
		cout << hugeNumber [ i ];

		if ( i != size && i == floatPosition )
			cout << '.';
	}
	cout << endl;
}

HugeNumber & HugeNumber::operator += ( HugeNumber & huge )
{
	int pN;
	if ( hugeNumber[ 0 ] == 0 && huge.hugeNumber[ 0 ] == 1 )
	{
		huge.hugeNumber[ 0 ] = 0;
		*this -= huge;

		return *this;
	}
	else if ( hugeNumber[ 0 ] == 1 && huge.hugeNumber[ 0 ] == 0 )
	{
		hugeNumber[ 0 ] = 0;

		HugeNumber temp;
		temp = huge;
		temp -= *this;
		*this = temp;
		
		return *this;
	}
	else if ( hugeNumber [ 0 ] == 0 && huge.hugeNumber[ 0 ] == 0 )
		pN = 0;
	else
		pN = 1;

	int aFloatLength = size - floatPosition, 
		bFloatLength = huge.size - huge.floatPosition,
		aIntLength = floatPosition,
		bIntLength = huge.floatPosition;

	int rFloatLength = max( aFloatLength, bFloatLength ),
		rIntLength = max( aIntLength, bIntLength );

	int resultSize = rFloatLength + rIntLength;

	int *result = new int [ resultSize + 1 ];

	int i = rFloatLength; 
	if ( rFloatLength != aFloatLength )
		for ( i = rFloatLength; i > aFloatLength; i -- )
			result[ rIntLength + i ] = huge.hugeNumber[ bIntLength + i ];
	if ( rFloatLength != bFloatLength )
		for ( i = rFloatLength; i > bFloatLength; i -- )
			result[ rIntLength + i ] = hugeNumber[ aIntLength + i ];


	int indexA = aIntLength + i, indexB = bIntLength + i, indexR = rIntLength + i;
	int up = 0;
	while ( indexA && indexB )
	{
		result[ indexR ] = hugeNumber[ indexA -- ] + huge.hugeNumber[ indexB -- ] + up;
		up = result[ indexR ] / 10;
		result[ indexR ] %= 10;

		indexR --;
	}
	
	while ( indexA )
	{
		result[ indexR ] = hugeNumber[ indexA -- ] + up;
		up = result[ indexR ] / 10;
		result[ indexR ] %= 10;

		indexR --;
	}

	while ( indexB )
	{
		result[ indexR ] = huge.hugeNumber[ indexB -- ] + up;
		up = result[ indexR ] / 10;
		result[ indexR ] %= 10;

		indexR --;
	}

	int margin = 0;
	if ( up ) 
	{
		result[ 0 ] = up;
		margin = 1;
	}
	
	HugeNumber temp( result + 1 - margin, resultSize + margin, rIntLength + margin, pN, precision );
	delete []result;

	*this = temp;
	return *this;
}

HugeNumber & HugeNumber::operator -= ( HugeNumber &huge )
{
	int pN;
	if ( hugeNumber[ 0 ] == 0 && huge.hugeNumber[ 0 ] == 1 )
	{
		huge.hugeNumber[ 0 ] = 0;

		*this += huge;

		return *this;
	}
	else if ( hugeNumber[ 0 ] == 1 && huge.hugeNumber[ 0 ] == 0 )
	{
		huge.hugeNumber[ 0 ] = 1;
		*this += huge;

		return *this;
	}
	else if ( hugeNumber[ 0 ] == 0 && huge.hugeNumber[ 0 ] == 0 )
	{
		if ( huge > *this )
		{
			HugeNumber temp;
			temp = huge;

			temp -= *this;
			*this = temp;
			
			hugeNumber[ 0 ] = 1;
			return *this;
		}
		pN = 0;
	}
	else
	{
		hugeNumber[ 0 ] = 0;
		huge.hugeNumber[ 0 ] = 0;
		if ( huge > *this )
		{
			HugeNumber temp;
			temp = huge;

			temp -= *this;
			*this = temp;

			return *this;
		}
		pN = 1;
	}

	int rIntLength = max( floatPosition, huge.floatPosition ),
		aFloatLength = size - floatPosition,
		bFloatLength = huge.size - huge.floatPosition,
		rFloatLength = max( aFloatLength, bFloatLength );

	int length = rIntLength + rFloatLength + 1;
	int * a = new int [ length ];
	int * b = new int [ length ];
	int * result = new int [ length ];

	//copy hugeNumber[] and huge.hugeNumber to a[] and b[]
	int i;
	for ( i = 1; i <= rFloatLength; i ++ )
	{
		a[ rIntLength + i ] = ( i <= aFloatLength ? hugeNumber[ floatPosition + i ] : 0 );
		b[ rIntLength + i ] = ( i <= bFloatLength ? huge.hugeNumber[ huge.floatPosition + i ] : 0 );
	}

	int destA = rIntLength - floatPosition;
	int destB = rIntLength - huge.floatPosition;
	for ( i = 1; i <= rIntLength; i ++ )
	{
		a[ i ] = ( i <= destA ? 0 : hugeNumber[ i - destA ] );
		b[ i ] = ( i <= destB ? 0 : huge.hugeNumber[ i - destB ] );
	}
	 
	//sub the a[] and b[], and put the result in result[]
	int down = 0;
	for ( i = length - 1; i >= 1; i -- )
	{
		result[ i ] = a[ i ] - b[ i ] - down;
		if ( result[ i ] < 0 )
		{
			down = 1;
			result[ i ] += 10;
		}
		else
			down = 0;
	}

	int Length = length - 1, begin = 1, TempIntLength = rIntLength;
	for ( i = 1; result[ i ] == 0 && i < rIntLength; i ++ )
	{
		Length --;
		begin ++;
		TempIntLength --;
	}
	for ( i = length - 1; result[ i ] == 0 && i > rIntLength; i -- )
		Length --;

	HugeNumber temp( result + begin, Length, TempIntLength , pN, precision );
	*this = temp;

	delete []a;
	delete []b;
	delete []result;

	return *this;
}

HugeNumber & HugeNumber::operator *= ( const HugeNumber &huge )
{
	int pN;
	if ( hugeNumber[ 0 ] == huge.hugeNumber[ 0 ] )
		pN = 0;
	else
		pN = 1;

	int sizeA = size, sizeB = huge.size;
	int rSize = sizeA + sizeB;
	int *result = new int[ rSize + 1 ];
	init( result, rSize + 1 );

	int distRA = rSize - sizeA;
	for ( int indexB = sizeB; indexB >= 1; indexB -- )
	{
		int temp = huge.hugeNumber[ indexB ];
		int move = sizeB - indexB;
		int upMul = 0, upAdd = 0;

		int indexR;
		for ( int indexA = sizeA; indexA >= 1; indexA -- )
		{
			int t = temp * hugeNumber[ indexA ] + upMul;
			upMul = t / 10;
			t %= 10;

			indexR = indexA + distRA - move;
			result[ indexR ] += ( t + upAdd );
			upAdd = result[ indexR ] / 10;
			result[ indexR ] %= 10;
		}
		
		result[ indexR - 1 ] += ( upMul + upAdd );
	}

	int margin = 0;
	if ( result[ 1 ] == 0 )
		margin = 1;
	
	HugeNumber rTemp( result + 1 + margin, rSize - margin, floatPosition + huge.floatPosition - margin, pN, precision );

	delete []result;

	*this = rTemp;
	return *this;
}

HugeNumber & HugeNumber::operator /= ( const HugeNumber &huge )
{
	int pN;
	if ( hugeNumber[ 0 ] == huge.hugeNumber[ 0 ] )
		pN = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合九色综合欧美亚洲| 3atv在线一区二区三区| 国产高清成人在线| 麻豆成人久久精品二区三区红| 亚洲午夜免费视频| 亚洲综合色噜噜狠狠| 亚洲欧美日韩一区二区三区在线观看| 久久五月婷婷丁香社区| 久久综合九色综合欧美就去吻| 欧美成人欧美edvon| 日韩欧美国产一二三区| 精品99一区二区三区| 精品久久久久av影院 | 久久久久国产精品厨房| 欧美成人三级电影在线| 欧美sm极限捆绑bd| 国产三级欧美三级| 欧美国产一区视频在线观看| 国产精品久久久久国产精品日日| 综合av第一页| 亚洲国产一区视频| 日本vs亚洲vs韩国一区三区二区| 捆绑紧缚一区二区三区视频 | 色一情一伦一子一伦一区| 在线观看日韩精品| 欧美精品v日韩精品v韩国精品v| 91精品在线观看入口| 欧美精品一区二区三区很污很色的 | 在线电影国产精品| 精品va天堂亚洲国产| 久久久国产午夜精品| 日韩一区在线播放| 亚洲va国产va欧美va观看| 免费在线观看精品| 成人精品一区二区三区中文字幕| 色综合天天综合| 欧美精品在线视频| 久久久精品免费免费| 1024成人网色www| 日韩电影免费在线看| 高清视频一区二区| 欧美日韩精品高清| 国产欧美一区二区三区鸳鸯浴 | 北条麻妃一区二区三区| 欧美日韩国产精选| 欧美大黄免费观看| 亚洲人xxxx| 精品一区二区精品| 色8久久人人97超碰香蕉987| 日韩精品中午字幕| 亚洲免费看黄网站| 国产在线不卡一区| 欧美日韩国产大片| 国产精品成人一区二区三区夜夜夜| 亚洲影院免费观看| 国产精品77777| 欧美精品九九99久久| 国产精品久久久久影院| 美女视频第一区二区三区免费观看网站 | 成人app软件下载大全免费| 欧美电影在哪看比较好| 中文字幕在线观看一区| 美女看a上一区| 日本高清无吗v一区| 久久久久9999亚洲精品| 亚洲国产视频a| av在线不卡免费看| 国产丝袜美腿一区二区三区| 天堂成人国产精品一区| 97国产精品videossex| 久久网站最新地址| 美女爽到高潮91| 欧美艳星brazzers| 国产精品超碰97尤物18| 精品一区二区在线视频| 欧美日本国产一区| 亚洲乱码日产精品bd| 风间由美一区二区三区在线观看| 制服丝袜成人动漫| 国产一区二区三区久久久| 91福利视频网站| 国产精品国产三级国产aⅴ入口| 国产一区二区三区香蕉| 91麻豆精品国产91久久久久久久久 | 91久久一区二区| 中文字幕中文乱码欧美一区二区| 国产一区二区三区高清播放| 欧美一级理论性理论a| 亚洲一本大道在线| 欧美在线高清视频| 亚洲免费三区一区二区| 91在线无精精品入口| 国产精品久久久爽爽爽麻豆色哟哟 | 免费不卡在线观看| 欧美日韩亚洲另类| 亚洲二区在线视频| 精品视频在线看| 一区2区3区在线看| 在线影院国内精品| 亚洲小说欧美激情另类| 欧美伊人久久大香线蕉综合69| 亚洲欧美电影一区二区| 99精品视频免费在线观看| 中文欧美字幕免费| av中文一区二区三区| 国产精品情趣视频| 99精品欧美一区| 亚洲欧洲日产国产综合网| 99精品视频一区二区| 亚洲精品美腿丝袜| 欧美最新大片在线看| 亚洲国产另类av| 欧美妇女性影城| 日韩av网站在线观看| 精品日韩欧美在线| 国产精品一区二区91| 国产精品麻豆欧美日韩ww| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日本韩国一区二区| 亚洲第一福利一区| 91精品综合久久久久久| 狠狠色丁香久久婷婷综| 国产精品视频一区二区三区不卡| 97超碰欧美中文字幕| 香蕉成人伊视频在线观看| 欧美一区二区私人影院日本| 精品中文字幕一区二区| 欧美激情在线观看视频免费| 99久久er热在这里只有精品15 | 紧缚捆绑精品一区二区| 久久精品男人的天堂| 99久久国产综合精品女不卡| 一级日本不卡的影视| 4438x亚洲最大成人网| 国产精品一区二区你懂的| 综合网在线视频| 欧美一级高清大全免费观看| 国产精品一区二区在线观看网站 | 成人午夜伦理影院| 一区二区欧美在线观看| 欧美变态tickle挠乳网站| 国产成人av一区二区三区在线观看| 国产精品久久精品日日| 欧美挠脚心视频网站| 国产乱人伦偷精品视频不卡 | 成人av资源在线观看| 亚洲成人av免费| 国产日韩欧美高清| 日韩一区二区电影网| av一区二区三区| 毛片av一区二区| 亚洲精品久久久蜜桃| 久久综合久久久久88| 在线观看欧美精品| 国产美女精品人人做人人爽| 亚洲在线视频一区| 国产欧美日本一区视频| 欧美日韩综合一区| 丁香桃色午夜亚洲一区二区三区| 亚洲一区二区三区在线看| 久久久www成人免费无遮挡大片 | 亚洲一区在线观看免费 | 亚洲美女在线一区| 久久女同精品一区二区| 欧美日韩色一区| av不卡一区二区三区| 久草在线在线精品观看| 亚洲精品欧美二区三区中文字幕| 亚洲精品在线免费观看视频| 色视频成人在线观看免| 岛国精品一区二区| 美腿丝袜亚洲色图| 偷拍自拍另类欧美| 亚洲欧美国产毛片在线| 国产亚洲短视频| 欧美成人精品1314www| 欧美天天综合网| 91影院在线免费观看| 国产精品综合二区| 日韩电影在线免费看| 一区二区视频在线看| 中日韩免费视频中文字幕| 日韩欧美一级二级三级久久久| 在线视频你懂得一区| 99久久99久久免费精品蜜臀| 国产精品一区二区三区乱码| 麻豆精品国产91久久久久久| 亚洲国产欧美在线人成| ●精品国产综合乱码久久久久| 久久久九九九九| 久久久久久久久久久久久女国产乱 | 欧美日韩三级一区| 色一区在线观看| 色综合天天综合狠狠| 不卡一卡二卡三乱码免费网站| 国产一区二区精品在线观看| 精品一区二区三区影院在线午夜| 偷窥少妇高潮呻吟av久久免费| 亚洲中国最大av网站| 亚洲午夜精品网|