c++ 库

1. c++ 大数据整数处理 自己C++库更新版

#ifndef _BIG_DATA_STRING_H
#define _BIG_DATA_STRING_H

#include<iostream>
#include <string>
#include<Windows.h>
#include<fstream>
using namespace std;

// FUNCTION: deal big number for int overflow mainly
// 类中函数说明:每个函数名第一个标示符是大写字母,则是对外窗口,否则不是
// extra the class of string
class IntString:public string
{

private:

	// function 17: go larger
	// input: a int keyword with string , and the int keyword key
	// output: a double number
	// 功能: 尝试找到一个区间使得 a^2 <= key <= b^2
	static string _make_qujian(string key,int weishu); 

	// function 18: binary search
	// input: two int numbers s and b, and the int keyword key and weishu
	// output: a double number with string
	// 功能: 实现sqrt函数,找到 r^2 == key
	static string _binary_search(string s,string b,string key,int weishu); 

	// function 19: get perfect double
	// input: two strings with data and key ,weishu
	// output: a string with result(data < result < data+1) ,and result^2 <= key
	// 功能: 实现整数开方精确到小数部分
	static string _get_perfect(string data,string key,int weishu);  

	// function 19: get more number
	// input: two string data and key ,(bigger)
	// output: a pair with <bool,string>,if(true) perfect string,or bad string
	// 功能: 进一步精确小数的位数
	static std::pair<bool,string> _get_more_number(string data,string key);

public:

	// 约化分子分母
	static std::pair<string,string> YuehuaFenshu(string a,string b);

	// 求出两个数的最大公约数
	static string MaxYueshu(string a,string b);

	// 功能: 实现参数两个整数的相加操作,结果存在返回的字符串里
	static string ADD_Int(string a,string b);

	// 功能: 实现参数两个整数的相减操作,结果存在返回的字符串里
	static string SUB_Int(string a,string b);

	// 功能: 实现参数两个整数的相乘操作,结果存在返回的字符串里
	static string MULT_Int(string a,string b);

	// 功能: 实现参数两个整数的相除操作,结果存在返回的字符串里
	static string DIV_Int(string a,string b);

	// 功能: 实现参数两个整数的a^b操作,结果存在返回的字符串里
	static string Pow_Int(string a,string b);

	// 功能: 将整数a转换成对应的字符串格式
	static string Int_To_String(int x);

	// 对于正整数相除
	static string Division(string a,string b);

	// 对于正整数相减
	static string SubInt(string a,string b);

	// 对于正整数相加
	static string AddInt(string a,string b);

	// 把一个字符(0-9)转成对应的整数
	static int CharToNumber(char c);

	// 把一个一位整数(0-9)转成对应的字符串
	static string IntToChar(int i);

	// 检查字符串里的数据是否是一个整数(可以是负数)
	static bool Check_all_number(string a);

	// 功能: 实现参数两个整数的a和b比较操作,结果< , = , >存在返回的字符里
	static char Compare(string a,string b);

	// 把一个整数字符串规整化
	static bool Standardization(string &a);

	// 功能: 将存在字符串里的整数取出来,放在整形容器里,然后返回,根据返回的结果可以判定是否转换成功
	static std::pair<bool,int> String_into_intNumber(string &a);

	// 功能: 实现 sqrt 函数 开方函数 ,weishu 为小数长度
	static string Sqrt_data( string data ,int weishu);  

	// 功能: 求出a%b(a>0 && b>0)
	static string Qiuyu(string a,string b);

	// 功能: 实现取反操作,相反数
	static string Qiu_fanshu(string a);

	// 功能 : 把一个十进制数转换成二进制数,bool值为二进制数的符号位
	static std::pair<bool,string> Data_to_Binary_system(string data);

	// 功能:计算一个整数有多少位数
	static int IntData_length(int N);

	// 功能:一个数组,整数的每一位,还有和放在数组的最后面 和它的长度
	static std::pair<int*,int> IntToArray(int a);

};

// mode the add of int
string IntString::ADD_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input ADD_Int";
	}
	Standardization(a);
	Standardization(b);	

	if(a[0] != '-' && b[0] != '-')
		return AddInt(a,b);
	else if(a[0] != '-'&& b[0] == '-')
		return SubInt( a,b.substr( 1,b.size() ) );
	else if(a[0] == '-'&& b[0] != '-')
		return SubInt(b,a.substr(1,a.size()));
	else return '-'+AddInt(a.substr(1,a.size()),b.substr( 1,b.size() ));
};

// make a-b mode int a - b;
string IntString::SUB_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input Multiplies_Int";
	}
	Standardization(a);
	Standardization(b);
	if(a[0] != '-' && b[0] != '-')
		return SubInt(a,b);
	else if(a[0] != '-' && b[0] == '-')
		return AddInt(a,b.substr(1,b.size()));
	else if(a[0] == '-' && b[0] != '-')
		return "-"+AddInt(a.substr(1,a.size()),b);
	else return SubInt( b.substr(1,b.size()) , a.substr(1,a.size()) );
};

// make a*b mode int a * b;
string IntString::MULT_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input Multiplies_Int";
	}
	Standardization(a);
	Standardization(b);
	string::size_type i = a.size(),j = b.size();
	string c = "0",d = "";
	bool fushu = (a[0] == '-' && b[0] != '-')||(a[0] != '-' && b[0] == '-');
	if(a[0] == '-')
		a = a.substr(1,a.size());
	if(b[0] == '-')
		b = b.substr(1,b.size());

	int jinwei = 0;
	for( j = b.size()-1 ; j < b.size() ;j--)
	{
		// each number of b to * a
		jinwei = 0;
		for( i = a.size()-1 ; i < a.size() ;i-- )
		{
			d = IntToChar(   ( CharToNumber(a[i]) * CharToNumber(b[j]) + jinwei ) % 10 )+ d ;
			jinwei = ( CharToNumber(a[i]) * CharToNumber(b[j]) + jinwei ) / 10 ;
		}
		if(jinwei)
			d = IntToChar(jinwei) +d;
		// add all number result
		c = ADD_Int(c,d);
		d = "";
		unsigned int zero = 0 ;
		while( zero < b.size() - j )
		{
			d = d + '0';
			zero ++;
		}

	}

	Standardization(c);
	if( fushu && c != "0" )
		return '-'+c;
	else return c;
};

// mode the division a/b
string IntString::DIV_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return "0";
	else if( b.empty() )
		return "e";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input DIV_Int input a = "+a+" ,b= "+b;
	}
	Standardization(a);
	Standardization(b);
	if(b == "0")
		return "e";
	bool fushu =  (a[0] == '-' && b[0] != '-')||(a[0] != '-' && b[0] == '-');
	if( a[0] == '-' )
		a = a.substr(1,a.size());
	if( b[0] == '-' )
		b = b.substr(1,b.size());
	if( Compare(a,b) == '<' )
		return "0";

	string yushu = "";

	string beichushu = a.substr(0,b.size());
	string shang = Division( beichushu , b);
	yushu =  SubInt( beichushu ,MULT_Int( shang, b) );
	string c = shang;

	for(string::size_type i = b.size(); i<a.size(); i++)
	{
		beichushu =   yushu+ a[i]     ;
		shang = Division( beichushu , b);
		c = c + shang;
		yushu =  SubInt( beichushu ,MULT_Int( shang, b) );
	}
	Standardization(c);
	return fushu?('-'+c):c;
};

// function: pow number x,y
string IntString::Pow_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return "0";
	else if( b.empty() )
		return "e";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input DIV_Int";
	}
	Standardization(a);
	Standardization(b);
	string result = "1" ;
	if(Compare(b,"0") != '<')
		for(string i ="0" ;Compare(i,b) == '<' ;i = AddInt(i,"1"))
		{
			result = MULT_Int(result,a);
		}
	else
		for(string i ="0" ;Compare(i,b) == '>' ;i = SUB_Int(i,"1"))
		{
			result = DIV_Int(result,a);
		}
		return result ;
};

// function : int To string
string IntString::Int_To_String(int x)
{
	bool fushu = false;
	string result="";
	if(x < 0 )
	{
		fushu = true ;
		x = -x;
	}
	else if( x == 0 )
		return "0";
	while(x)
	{
		result = IntToChar(x % 10) + result;
		x = x/10;
	}
	if(fushu)
		result = "-"+result;
	return result;
};

// static char division a/b
string IntString::Division(string a,string b)
{
	// exception of input
	if( a.empty() )
		return "0";
	else if( b.empty() )
		return "e";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		cout<<"exception of input Division"<<endl;
		return "e";
	}
	Standardization(a);
	Standardization(b);
	int i = 0;
	while( i<=9 )
	{
		// if a - b*i < b
		if(  Compare(   SUB_Int(   a  ,   MULT_Int(IntToChar(i),b)    ) , b ) == '<'    )
			break;
		i++;
	}
	if( i>9 )
		return "e";
	return ""+IntToChar(i);
};

// make a-b mode int a - b;
string IntString::SubInt(string a,string b)
{
	// exception of input
	if(!Check_all_number(a) || !Check_all_number(b))
		return "exception of input MinusInt";
	Standardization(a);
	Standardization(b);
	// particular string of input
	if(a.empty())
	{
		if(b.empty())
			return "0";
		else
			return "-"+b;
	}
	else if(b.empty())
	{
		return a;
	}

	// normal number a < b
	string c = "";
	bool check = true ;
	if(Compare(a,b) == '=')
		return "0";
	else if(Compare(a,b) == '<')
	{
		c = a ;
		a = b ;
		b = c ;
		c = "";
		check = false ;
	}
	// normal number a >= b
	string::size_type i = a.size()-1, j = b.size()-1;
	int jiewei = 0,now;

	while(i < a.size() && j < b.size())
	{
		now = CharToNumber(a[i]) - CharToNumber(b[j]) - jiewei ;

		if( now < 0 )
		{
			jiewei = 1;
			now = 10 + now ;
		}
		else jiewei = 0;
		c = IntToChar(now)  + c ;
		i--;j--;
	}
	while(i < a.size())
	{
		now = CharToNumber(a[i]) - jiewei ;
		if( now < 0 )
		{
			jiewei = 1;
			now = 10 + now ;
		}
		else jiewei = 0;
		c = IntToChar( now )  + c ;
		i--;
	}
	Standardization(c);
	if(!check)
		c = '-' + c;
	return c;
};

// mode the add of int
string IntString::AddInt(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input AddInt";
	}
	Standardization(a);
	Standardization(b);
	string::size_type i = a.size()-1 ,j = b.size()-1 , k = 0 ;
	string c = "";
	int jinwei = 0;
	while( i < a.size() && j < b.size() )
	{
		c = IntToChar( ( CharToNumber(a[i]) + CharToNumber(b[j]) + jinwei ) % 10 ) + c;
		jinwei = ( CharToNumber(a[i]) + CharToNumber(b[j]) + jinwei ) / 10;
		j--;i--;
	}
	while( j < b.size()  )
	{
		c =  IntToChar( ( CharToNumber(b[j]) + jinwei ) % 10 ) + c;
		jinwei = ( jinwei + CharToNumber(b[j]) ) / 10;
		j--;
	}
	while( i < a.size() )
	{
		c =  IntToChar( ( CharToNumber(a[i]) + jinwei ) % 10 ) + c;
		jinwei = ( jinwei + CharToNumber(a[i]) ) / 10;
		i--;
	}
	if( jinwei )
		c = IntToChar(  jinwei  ) + c;
	Standardization(c);
	return c;
};

// make char to the int number
int IntString::CharToNumber(char c)
{
	if( c >= '0' && c <= '9' )
		return int(c - '0');
	else
	{
		cout<<c<<" exception of input CharToNumber "<<endl;
		return 0;
	}
};

// make int to the model char
string IntString::IntToChar(int i)
{
	if( i >= 0 && i <= 9 )
	{
		string c = "";
		return c+char(i+48);
	}
	else
	{
		cout<<i<<" exception of input IntToChar"<<endl;
		return "e";
	}
};

// check whether the string is legal
bool IntString::Check_all_number(string a)
{
	if(a.empty())
		return true ;
	string::size_type L = a.size(),i = 0;
	if(a[0] == '-')
		i++;
	while( i < L )
	{
		if( a[i] < '0' || a[i] > '9')
			return false;
		i++;
	}
	return true ;
};

// compare string a and b
char IntString::Compare(string a,string b)
{
	if(a.empty() || b.empty())
	{
		cout<<"error of input compare";
		return 'e';
	}
	else
	{
		if(!Check_all_number(a) || !Check_all_number(b))
		{
			return 'e';
		}
		Standardization(a);
		Standardization(b);
		if(a[0] == '-' && b[0] != '-')
			return '<';
		else if( a[0] != '-' && b[0] == '-')
			return '>';
		bool fushu = (a[0] == '-');

		if(a.size() > b.size() )
			return fushu?'<':'>';
		else if(a.size() == b.size())
		{
			for(string::size_type i = 0;i < a.size(); i++)
			{
				if(a[i] > b[i])
					return fushu?'<':'>';
				if(a[i] < b[i])
					return fushu?'>':'<';
			}
			return '=';
		}
		return fushu?'>':'<';
	}
};

// make string into standard string number
bool IntString::Standardization(string &a)
{
	if(!Check_all_number(a))
	{
		cout<<a<<" exception of input Standardization"<<endl;
		return false;
	}
	string::size_type i = 0 ;
	bool fushu = false ;
	if( a[0] == '-' )
	{
		fushu = true ;
		i = 1 ;
	}
	while(i < a.size())
	{
		if(a[i] != '0')
			break;
		i++;
	}
	if(i == a.size())
		i--;
	a = a.substr(i,a.size()-i) ;
	if( fushu && a != "0")
		a = '-' + a ;
	return true ;
};

// make string(>0) into standard int number
std::pair<bool,int> IntString::String_into_intNumber(string &a)
{
	if(Standardization(a))
	{
		int max_int = INT_MAX ;
		string max = Int_To_String(max_int);
		bool fushu = false;
		if(a[0] == '-')
		{
			fushu = true ;
			a = a.substr(1,a.length());
		}
		if(Compare(a,max) != '<')
		{
			cout<<"溢出 String_into_intNumber"<<endl;
			return std::make_pair(false,0);
		}
		int result = 0 ;
		for(size_t i =0;i<a.length();i++)
		{
			result = result * 10 + CharToNumber(a[i]);
		}
		if(fushu)
			result = - result;
		return std::make_pair(true,result);
	}
	else
	{
		cout<<"exception of function String_into_intNumber input"<<endl;
		return std::make_pair(false,0);
	}
};

// function: get data
// input: a int number data with string
// output: a double number b with string
// 功能: 实现 sqrt 函数
string IntString::Sqrt_data( string data ,int weishu)
{
	if(weishu < 0)
		weishu = 0;
	if(! IntString::Check_all_number(data))
	{
		cout<<"exception of function _sqrt_data input"<<endl;
		return "NULL";
	}
	IntString::Standardization(data);
	char r = IntString::Compare(data,"0");
	if(r == '=')
		return "0";
	else if(r == '<')
	{
		cout<<"exception of function _sqrt_data input"<<endl;
	}
	return _make_qujian(data,weishu);
}

// function: go larger
// input: two int number a and b, and the int keyword key
// output: a double number with string
// 功能: 尝试找到一个区间使得 a^2 <= key <= b^2
string IntString::_make_qujian(string key,int weishu)
{

	if( IntString::Compare(key,"0") == '>' && weishu >=0 )
	{
		string s,b;
		int length = key.length()/2;
		// 偶数
		if(key.length() % 2 == 0)
		{
			s = IntString::Pow_Int("10",IntString::Int_To_String(length-1));
			b = IntString::Pow_Int("10",IntString::Int_To_String(length));
		}
		// 奇数
		else
		{
			s = IntString::Pow_Int("10",IntString::Int_To_String(length));
			b = IntString::Pow_Int("10",IntString::Int_To_String(length+1));
		}
		return _binary_search(s,b,key,weishu);// binary search
	}
	else
	{
		cout<<"exception of function _go_larger input"<<endl;
		return "NULL";
	}
}

// function: binary search
// input: two int numbers s and b, and the int keyword key
// output: a double number with string
// 功能: 实现sqrt函数,找到 r^2 == key
string IntString::_binary_search(string s,string b,string key,int weishu)
{
	if( IntString::Compare(s,"1")!= '<' && IntString::Compare(b,s) != '<' && weishu >= 0 )
	{
		// 检查是否是范围临界值
		string s_2 = IntString::MULT_Int(s,s);
		string b_2 = IntString::MULT_Int(b,b);
		if(IntString::Compare(key,s_2) == '=')
			return s;
		if(IntString::Compare(key,b_2) == '=')
			return b;

		// 核心算法:求出中间值
		string zhong ,zhong_2,zhong2_2;
		char r ;
		while(IntString::Compare(s,b) != '>')
		{

			// 求出中间值
			zhong = IntString::DIV_Int(IntString::ADD_Int(s,b) ,"2");

			zhong_2 = IntString::MULT_Int(zhong,zhong);
			r = IntString::Compare(zhong_2,key);

			// 中间的平方大于key值时,这时候最大值减小
			if(r == '>')
				b = IntString::SUB_Int(zhong,"1");

			// 出口是,相等时
			else if( r == '=' )
				return zhong;

			// 中间的平方小于key值时,中间值要变大,要怎么增大呢
			else if(r == '<')
			{
				zhong2_2 = IntString::MULT_Int(IntString::ADD_Int(zhong,"1"),IntString::ADD_Int(zhong,"1"));
				r = IntString::Compare(zhong2_2,key);

				// 中间值过大时,则要取小数部分
				if(r == '>')
					return _get_perfect(zhong,key,weishu);

				// 中间值不够大,最小值变大
				else s = IntString::ADD_Int(zhong,"1");
			}
		}
		return "no result";
	}
	else
	{
		cout<<"输入异常 _binary_search input"<<endl;
		return "error";
	}
}

// function: get perfect double
// input: two strings with data and key
// output: a string with result(data < result < data+1) ,and result^2 <= key
// 功能: 实现整数开方精确到小数部分
string IntString::_get_perfect(string data,string key,int weishu)
{
	int i = weishu;
	string d = data;
	string k = key;
	string result;
	std::pair<bool,string> r ;

	while(i > 0)
	{
		r = _get_more_number(d,k);
		if(r.first == true)
			break;
		else
		{
			d = r.second;
			k += "00";
		}
		i--;
	}
	if(weishu != 0)
		result = data+"."+d.substr(data.length(),d.length()-data.length());
	else result = data;
	return result;
}

// function: get more number
// input: two string data and key ,(bigger)
// output: a pair with <bool,string>,if(true) perfect string,or bad string
// 功能: 进一步精确小数的位数
std::pair<bool,string> IntString::_get_more_number(string data,string key)
{
	char s = '1',e ='9',zhong,guanxi1,guanxi2 ;
	key += "00" ;

	string r1,r2 ;
	r1 = IntString::MULT_Int((data+'9'),(data+'9')) ;
	guanxi1 = IntString::Compare(r1,key) ;
	if(guanxi1 == '<')
		return std::make_pair(false,data+'9');
	else if(guanxi1 == '=')
		return std::make_pair(true,data+'9');
	r1 =  IntString::MULT_Int((data+'1'),(data+'1'));
	guanxi1 = IntString::Compare(r1,key);
	if(guanxi1 == '=')
		return std::make_pair(true,data+'1');
	else if(guanxi1 == '>')
		return std::make_pair(false,data+'0');
	while(s <= e)
	{
		zhong = (s+e)/2;

		r1 = IntString::MULT_Int((data+zhong),(data+zhong));
		guanxi1 = IntString::Compare(r1,key);
		if(guanxi1 == '=')
		{
			return std::make_pair(true,data+zhong);
		}
		else if(guanxi1 == '>')
			e = zhong -1;
		else if(guanxi1 == '<')
		{
			r2 = IntString::MULT_Int((data+char(zhong+1)),(data+char(zhong+1)));
			guanxi2 = IntString::Compare(r2,key);
			if(guanxi2 == '>')
				return std::make_pair(false,data+zhong);
			else s = zhong+1;
		}
	}
}

// function: 求余操作( 对两个正整数 )
// input: two int number within string
// output: a int number within string
// 功能: 求出a%b
string IntString::Qiuyu(string a,string b)
{
	if(IntString::Compare(a,"0") != '>' || IntString::Compare(b,"0") != '>')
		return "error of function Qiuyu input";
	string shang = IntString::DIV_Int(a,b);
	string chengji = IntString::MULT_Int(shang,b);
	return IntString::SUB_Int(a,chengji);
}

// function: 求反数即对符号去反
// input: a int number within string
// output: a int number within string
// 功能: 实现取反操作
string IntString::Qiu_fanshu(string a)
{
	if(IntString::Check_all_number(a))
	{
		IntString::Standardization(a);
		if(a[0] == '-')
			return a.substr(1,a.length()-1);
		else return ("-"+a) ;
	}
	else
	{
		cout<<"exception of function Qiu_fanshu input"<<endl;
		return "error";
	}
}

// function: 把一个十进制整数转换成二进制数
// input: a int number within string
// output: a fuhao wei within bool and a binary_system result with string
// 功能 : 把一个十进制整数转换成二进制数
std::pair<bool,string> IntString::Data_to_Binary_system(string data)
{
	if(IntString::Check_all_number(data))
	{
		IntString::Standardization(data);
		string result = "";
		if(IntString::Compare(data,"0") == '=')
			return std::make_pair(false,"0");
		bool fushu = false;
		if(IntString::Compare(data,"0") == '<')
		{
			data = IntString::Qiu_fanshu(data);
			fushu = true;
		}
		while(IntString::Compare(data,"0") == '>')
		{
			result = IntString::Qiuyu(data,"2") + result ;
			data = IntString::DIV_Int(data,"2");
		}
		return std::make_pair(fushu,result);
	}
	else
	{
		cout<<"exception of function Data_to_Binary_system input"<<endl;
		return make_pair(true,"error");
	}
}

// function 23: 计算一个整数有多少位数
// 输入: 一个整数
// 输出:整数的位数
int IntString::IntData_length(int N)
{
	int data = N;
	int length  = 0;
	while(data != 0)
	{
		data = data/10;
		length ++;
	}
	return length ;
}

// function 24: 把一个整型数变成一个数组
// 输入: 一个整数
// 输出:一个数组和它的长度
std::pair<int *,int> IntString::IntToArray(int a)
{
	// 数据初始化
	int * data = new int[100] ;
	int length = 0 ;
	int sum = 0 ;

	// 异常输入
	if( a<0 )
		return std::make_pair(data,-1);
	// 特殊输入
	if(a == 0)
	{
		data[0] = 0;
		length = 1 ;
		data[length] = 0;
	}

	// 正常输入,一般一个整数位数不会超过 100
	// 整数的低位存在数组的前面,整数的高位存在数组的后面
	while( a>0 )
	{
		data[length] = a%10 ;
		sum += data[length] ;
		length ++ ;
		a = a/10 ;
	}
	data[length] = sum;
	// 返回结果
	return std::make_pair(data,length);
}

// 约化分子分母
std::pair<string,string> IntString::YuehuaFenshu(string a,string b)
{
	string c = MaxYueshu(a,b);
	a = DIV_Int(a,c);
	b = DIV_Int(b,c);
	return std::make_pair(a,b);
}

// 求出两个数的最大公约数
string IntString::MaxYueshu(string a,string b)
{
	// 异常输入
	if(Check_all_number(a) != true || Check_all_number(b) != true || Compare(a,"0") != '>' || Compare(b,"0") != '>')
		return "error of String::MaxYueshu input a= "+a+" ,b= "+b;

	// 正常输入,规划a和b,使得a >= b
	if(Compare(a,b) == '<')
	{
		string c = a ;
		a = b ;
		b = c ;
	}

	//	判断余数
	string yushu = IntString::Qiuyu(a,b);
	while(Compare(yushu,"0") != '=')
	{
		a = b;
		b = yushu ;
		yushu = Qiuyu(a,b);
	}

	// 返回结果b
	return b;
}

#endif
时间: 2024-10-12 14:58:59

c++ 库的相关文章

67个拯救web开发者的工具、库和资源!

划重点 在本文中,我不会去谈 React.Angular.Vue 等等这些大的前端框架,也不会谈 Atom.VS code.Sublime 等等这些已经很出名的代码编辑器,我只是想简单的分享一套我认为有助于提升开发者工作流的工具集. 这套工具集中的大部分你可能见过,也可能没见过,如果有哪个让你眼前一亮,那么我的分享就很值了. 这个列表包含许多种类的资源,所以这里我将它们分组整理. Javascript 库 Particles.js-一个用来在 web 中创建炫酷的浮动粒子的库 Three.js-

sqlserver 全库查询 带架构

网上现有的全库查询,无法识别自定义架构的数据库结构: declare @str nvarchar(10) declare @tablename varchar(50) declare @colname varchar(50) declare @counts int declare @sql nvarchar(2000)--以上定义变量 declare cur1 cursor for select a.name tablename,B.name colname from sys.objects a

iOS库--.a与.framework

一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存. 三.iOS里静态库形式? .a和.framework 四.iOS里动态库形式? .dylib和.framework 五.framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建立的.fram

Modbus库开发笔记之二:Modbus消息帧的生成

前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程.这其中与Modbus直接相关的就是Modbus消息帧的生成.Modbus消息帧也是实现Modbus通讯协议的根本. 1.Modbus消息帧分析 MODBUS协议在不同的物理链路上的消息帧有一些差异,但我们分析一下就会发现,在这些不同的消息帧中具有一下相同的部分,这对我们实现统一的数据操作非常重要,具体描述如下: (1).简单协议数据单元 MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)

数据分析之Numpy库入门

1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列表:数据类型可以不同,如:[3.1413,'pi',3.1404,[3.1402,2.34],'3.2376'] 数组:数据类型相同 .如[3.14,34.34,3433.3,343.23] 二维数据:二维数据由多个一维数据构成,是一维数据的集合形式!表格是典型的二维数据! 注意:表格的表头,可以是

3.2 标准库类型string(上)

#include <string> #include <iostream> using std::string; using std::cin; using std::cout; using std::endl; //string定义在命名空间std中 int main() { /**************3.2.1 定义和初始化string*****************/ string s1; //默认初始化,S1是一个空字符串 string S2 = s1; //S2时S

JS_JavaScript 框架(库)

JavaScript 框架(库) JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时. 为了应对这些调整,许多的 JavaScript (helper) 库应运而生. 这些 JavaScript 库常被称为 JavaScript 框架. 在本教程中,我们将了解到一些广受欢迎的 JavaScript 框架: jQuery Prototype MooTools 所有这些框架都提供针对常见 JavaScript 任务的函数,包括动画.DOM 操作以及 Ajax 处理

Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要配置Qt库和编译器.编译器只能使用苹果公司自主研发的Clang.1.分别下载并安装XCode和Command Line Tools(必须安装),安装完毕后,Clang就有了. https://developer.apple.com/downloads/ 2.下载Qt并默认安装 http://down

PostgreSQL数据库中跨库访问解决方案

PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访问. 方法A的示例如下: 测试1(测试postgres超级用户对不同schema下对象的访问) 查看当前数据库中的schema postgres=# \dn List of schemas Name | Owner -------------------+--------- dbms_job_pro

2016年 CSS 库、框架和工具新生榜 TOP 50

看看 CSS 在过去几年的巨大变化和快速发展,你就不会对它今年的开源工具大产量感到惊讶了.这些 CSS 库.框架和工具的建立不仅给我们提供了学习的视角,更给我们的工作与生活带来了便利. 本文精选了 50 款 2016 年发布的 CSS 库.框架和工具供大家享用,希望它们对您有所帮助. 分类快速预览:CSS 库,CSS Spinners,CSS 图像特效,CSS 实用程序,设计指南工具,响应式邮件与通讯列表框架,Flexbox 布局工具和框架,CSS 布局框架和 material design 框