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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? largenumber.cpp

?? A program for calculation of hypergeometric distribution
?? CPP
字號(hào):

#include "stdafx.h"
#include "LargeNumber.h"
#include <stdexcept>

//=====================================================================
//Auxiliary Functions:
//Build from unsigned long
inline void CLargeNumber::Build(unsigned uN, vector<char>& rvN)
{
	rvN.clear();
	if(0 == uN)
		rvN.push_back(0);
	else
		for( ;uN>0; )
		{
			rvN.push_back(uN % 10);
			uN /= 10;
		}
}

//Build from string
inline void CLargeNumber::Build(string const& rostrNumber, vector<char>& rvN)
{
	rvN.clear();
	for(int i=rostrNumber.size()-1; i>=0; i--)
	{
		if(rostrNumber[i]<'0' || rostrNumber[i]>'9')
			break;
		else
			rvN.push_back(rostrNumber[i]-'0');
	}
	Clean(rvN);
}

//Cleaning
inline void CLargeNumber::Clean(vector<char>& rvN)
{
	//Eliminate all leading 0s
	vector<char>::iterator it = rvN.end();
	while(it != rvN.begin())
	{
		it--;
		if(*it != 0)
			break;
	}
	rvN.erase(it+1, rvN.end());
}

//Comparison Function
inline int CLargeNumber::Compare(vector<char> const& rcvN1, vector<char> const& rcvN2)
{
	if(rcvN1.size() == rcvN2.size())
	{
		for(int i=rcvN1.size()-1; i>=0; i--)
		{
			if(rcvN1[i] == rcvN2[i])
				continue;
			return (rcvN1[i] < rcvN2[i]) ? -1 : 1;
		}
		return 0; //are equal
	}
	else
		return (rcvN1.size() < rcvN2.size()) ? -1 : 1;
}

//Addition
inline void CLargeNumber::Add(vector<char> const& rcvN1, vector<char> const& rcvN2, vector<char>& rvNRes)
{
	rvNRes.clear();
	//Local copies
	vector<char> vN1 = rcvN1;
	vector<char> vN2 = rcvN2;
	int iSize1 = vN1.size();
	int iSize2 = vN2.size();
	int i, iSize;
	//Fill with '0'
	if(iSize1 > iSize2)
	{
		for(i=iSize2; i<iSize1; i++)
			vN2.push_back(0);
		iSize = iSize1;
	}
	else
	{
		for(i=iSize1; i<iSize2; i++)
			vN1.push_back(0);
		iSize = iSize2;
	}
	int iC=0, iR;
	for(i=0; i<iSize; i++)
	{
		iR = vN1[i] + vN2[i] + iC;
		if(iR > 9)
		{
			iR -= 10;
			iC = 1;
		}
		else
			iC = 0;
		rvNRes.push_back(iR);
	}
	if(iC > 0)
		rvNRes.push_back(iC);
}

//Subtraction
inline void CLargeNumber::Subtract(vector<char> const& rcvN1, vector<char> const& rcvN2, vector<char>& rvNRes)
{
	rvNRes.clear();
	//Local copy
	vector<char> vN1 = rcvN1;
	for(int i=0; i<rcvN2.size(); i++)
	{
		if(rcvN2[i] > vN1[i])
		{
			vN1[i] += 10;
			for(int j=i+1; j<vN1.size(); j++)
			{
				if(vN1[j] > 0)
				{
					vN1[j]--;
					break;
				}
				else
					vN1[j] = 9;
			}
			vector<char>::iterator it = vN1.end();
			it--;
			if(0 == *it)
				vN1.erase(it);
		}
		rvNRes.push_back(vN1[i]-rcvN2[i]);
	}
	for( ;i<vN1.size(); i++)
		rvNRes.push_back(vN1[i]);
	Clean(rvNRes);
}

//Product with one digit
inline void CLargeNumber::Multiply(vector<char> const& rcvN, char c, vector<char>& rvNRes)
{
	rvNRes.clear();
	char t, s;
	t = 0;
	if(0 == c)
		rvNRes.push_back(0);
	else
	{
		for(int i=0; i<rcvN.size(); i++)
		{
			(s = c * rcvN[i] + t) > 9 ? (t = s/10, s %= 10) : (t = 0);
			rvNRes.push_back(s);
		}
		if(t>0)
			rvNRes.push_back(t);
	}
}

//Shift Left
inline void CLargeNumber::ShiftLeft(vector<char>& rvN, int iLeft)
{
	vector<char>::iterator i;
	for(int j=0; j<iLeft; j++)
	{
		i = rvN.begin();
		rvN.insert(i, 0);
	}
}

//Multiplication
inline void CLargeNumber::Multiply(vector<char> const& rcvN1, vector<char> const& rcvN2, vector<char>& rvNRes)
{
	vector<char> vZero;
	Build("0", vZero);
	if( 0 == Compare(rcvN1, vZero) || 0 == Compare(rcvN2, vZero))
	{
		rvNRes = vZero;
		return;
	}
	rvNRes.clear();
	vector<char> vDummy;
	for(int i=0; i<rcvN2.size(); i++)
		if(rcvN2[i] > 0)
		{
			Multiply(rcvN1, rcvN2[i], vDummy);
			ShiftLeft(vDummy, i);
			if(0 == i)
				rvNRes = vDummy;
			else
			{
				vector<char> vDummy1;
				Add(rvNRes, vDummy, vDummy1);
				rvNRes = vDummy1;
			}
		}
}

//Get the Position of the most significant Digit
inline int CLargeNumber::Position(vector<char> const& rcvN)
{
	int iPos = rcvN.size();
	if(0 == iPos)
		iPos = 1;
	return iPos;
}

//Compute a Power of 10
inline void CLargeNumber::Pow10(unsigned uPow, vector<char>& rvNRes)
{
	rvNRes.clear();
	rvNRes.push_back(1);
	vector<char>::iterator i;
	for(int j=0; j<uPow; j++)
	{
		i = rvNRes.begin();
		rvNRes.insert(i, 0);
	}
}

//Division
inline void CLargeNumber::Divide(vector<char> const& rcvN1, vector<char> const& rcvN2, vector<char>& rvQ, vector<char>& rvR)
{
	rvQ.clear();
	rvR.clear();
	if(Compare(rcvN1, rcvN2) >= 0)
	{
		vector<char> vDummy;
		vector<char> vTmp = rcvN2;
		int iPos = Position(rcvN1)-Position(rcvN2)-1;
		vector<char> vIncr;
		if(iPos > 0)
		{
			ShiftLeft(vTmp, iPos);
			Pow10(iPos, vIncr);
		}
		else
			Build(1, vIncr);
		rvR = rcvN1;
		Build(unsigned(0), rvQ);
		while(Compare(rvR, vTmp) >= 0)
		{
			Add(rvQ, vIncr, vDummy);
			rvQ = vDummy;
			Subtract(rvR, vTmp, vDummy);
			rvR = vDummy;
		}
		if(Compare(rvR, rcvN2) >= 0)
		{
			vector<char> vQ;
			vector<char> vR;
			Divide(rvR, rcvN2, vQ, vR);
			rvR = vR;
			Add(rvQ, vQ, vDummy);
			rvQ = vDummy;
		}
	}
	else
	{
		Build(unsigned(0), rvQ);
		rvR = rcvN1;
	}
}

//=====================================================================

//Constructor From a Number
CLargeNumber::CLargeNumber(int iNumber)
{
	if(iNumber < 0)
	{
		m_cSign = -1;
		iNumber = -iNumber;
	}
	else
		m_cSign = 1;
	Build(iNumber, m_oNumber);
}

//Constructor From a String
CLargeNumber::CLargeNumber(string const& rostrNumber)
{
	//Eliminating leading and trailing blanks
	int iEnd;
	iEnd = rostrNumber.size()-1;
	for(; (rostrNumber[iEnd]==' ')&&(iEnd>=0); iEnd--)
		;
	if(iEnd < 0)
	{
		m_cSign = 1;
		Build(0, m_oNumber);
		return;
	}
	int iBeg;
	for(iBeg=0; ' '==rostrNumber[iBeg]; iBeg++)
		;
	string ostrNumber = rostrNumber.substr(iBeg, iEnd-iBeg+1);
	iBeg = 0;
	if('-' == ostrNumber[0])
	{
		m_cSign = -1;
		iBeg = 1;
	}
	else
		m_cSign = 1;
	Build(ostrNumber.c_str()+iBeg, m_oNumber);
}

//Transform to a string
string CLargeNumber::ToString() const
{
	if(0 == m_oNumber.size())
		return "0";
	string ostr;
	if(-1 == m_cSign)
		ostr += '-';
	vector<char>::const_reverse_iterator rIter = m_oNumber.rbegin();
	for(; rIter != m_oNumber.rend(); rIter++)
		ostr += *rIter+'0';
	return ostr;
}

//Equality Operator
inline bool CLargeNumber::operator==(CLargeNumber const& roLN)
{
	if(m_oNumber==roLN.m_oNumber && m_cSign==roLN.m_cSign)
		return true;
	else
		return false;
}

//Inequality Operator
inline bool CLargeNumber::operator!=(CLargeNumber const& roLN)
{
	return !(operator==(roLN));
}

inline CLargeNumber& CLargeNumber::operator-()
{
	m_cSign = -m_cSign;
	return *this;
}

inline bool CLargeNumber::operator<(CLargeNumber const& roLN) const
{
	if(-1==m_cSign && 1==roLN.m_cSign)
		return true;
	else if(1==m_cSign && -1==roLN.m_cSign)
		return false;
	else if(-1==m_cSign && -1==roLN.m_cSign)
		return (-1==Compare(roLN.m_oNumber, m_oNumber));
	else //if(1==m_cSign && 1==roLN.m_cSign)
		return (-1==Compare(m_oNumber, roLN.m_oNumber));
}

inline bool CLargeNumber::operator>(CLargeNumber const& roLN) const
{
	if(-1==m_cSign && 1==roLN.m_cSign)
		return false;
	else if(1==m_cSign && -1==roLN.m_cSign)
		return true;
	else if(-1==m_cSign && -1==roLN.m_cSign)
		return (-1==Compare(m_oNumber, roLN.m_oNumber));
	else //if(1==m_cSign && 1==roLN.m_cSign)
		return (-1==Compare(roLN.m_oNumber, m_oNumber));
}

inline bool CLargeNumber::operator<=(CLargeNumber const& roLN) const
{
	return !operator>(roLN);
}

inline bool CLargeNumber::operator>=(CLargeNumber const& roLN) const
{
	return !operator<(roLN);
}

inline CLargeNumber CLargeNumber::operator+(CLargeNumber const& roLN) const
{
	CLargeNumber oLNRes;
	if(1 == m_cSign && 1 == roLN.m_cSign)
	{
		oLNRes.m_cSign = 1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else if(-1 == m_cSign && -1 == roLN.m_cSign)
	{
		oLNRes.m_cSign = -1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else
	{
		int iComp = Compare(m_oNumber, roLN.m_oNumber);
		if(0 == iComp)
			return CLargeNumber(0L);
		else if(-1 == iComp)
			Subtract(roLN.m_oNumber, m_oNumber, oLNRes.m_oNumber);
		else
			Subtract(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
		if(1 == m_cSign && -1 == roLN.m_cSign)
		{
			if(-1 == iComp)
				oLNRes.m_cSign = -1;
			else
				oLNRes.m_cSign = 1;
		}
		else
		{
			if(-1 == iComp)
				oLNRes.m_cSign = 1;
			else
				oLNRes.m_cSign = -1;
		}
	}
	return oLNRes;
}

inline CLargeNumber CLargeNumber::operator-(CLargeNumber const& roLN) const
{
	CLargeNumber oLNRes;
	if(1 == m_cSign && -1 == roLN.m_cSign)
	{
		oLNRes.m_cSign = 1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else if(-1 == m_cSign && 1 == roLN.m_cSign)
	{
		oLNRes.m_cSign = -1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else
	{
		int iComp = Compare(m_oNumber, roLN.m_oNumber);
		if(0 == iComp)
		{
			return CLargeNumber(0);
		}
		else if(-1 == iComp)
			Subtract(roLN.m_oNumber, m_oNumber, oLNRes.m_oNumber);
		else
			Subtract(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
		if(1 == m_cSign && 1 == roLN.m_cSign)
		{
			if(-1 == iComp)
				oLNRes.m_cSign = -1;
			else
				oLNRes.m_cSign = 1;
		}
		else
		{
			if(-1 == iComp)
				oLNRes.m_cSign = 1;
			else
				oLNRes.m_cSign = -1;
		}
	}
	return oLNRes;
}

CLargeNumber CLargeNumber::operator*(CLargeNumber const& roLN) const
{
	CLargeNumber oLNRes;
	oLNRes.m_cSign = m_cSign * roLN.m_cSign;
	Multiply(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	return oLNRes;
}

CLargeNumber CLargeNumber::operator/(CLargeNumber const& roLN) const
{
	if(roLN < CLargeNumber("0"))
		//Throw an exception
		throw overflow_error("ERROR: Overflow in operator/!");
	if(0==Compare(m_oNumber, CLargeNumber("0").m_oNumber))
		return CLargeNumber("0");
	CLargeNumber oLNQ, oLNDummy;
	Divide(m_oNumber, roLN.m_oNumber, oLNQ.m_oNumber, oLNDummy.m_oNumber);
	oLNQ.m_cSign = (-1==m_cSign)&&(-1==roLN.m_cSign)||(1==m_cSign)&&(1==roLN.m_cSign) ? 1 : -1;
	return oLNQ;
}

inline CLargeNumber CLargeNumber::operator%(CLargeNumber const& roLN) const
{
	if(roLN < CLargeNumber("0"))
		//Throw an exception
		throw overflow_error("ERROR: Overflow in operator%!");
	if(0==Compare(m_oNumber, CLargeNumber("0").m_oNumber))
		return CLargeNumber("0");
	CLargeNumber oLNDummy, oLNR;
	Divide(m_oNumber, roLN.m_oNumber, oLNDummy.m_oNumber, oLNR.m_oNumber);
	oLNR.m_cSign = m_cSign;
	return oLNR;
}

inline CLargeNumber& CLargeNumber::operator+=(CLargeNumber const& roLN)
{
	CLargeNumber oLNRes;
	if(1 == m_cSign && 1 == roLN.m_cSign)
	{
		m_cSign = 1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else if(-1 == m_cSign && -1 == roLN.m_cSign)
	{
		m_cSign = -1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else
	{
		int iComp = Compare(m_oNumber, roLN.m_oNumber);
		if(0 == iComp)
		{
			*this = CLargeNumber(0);
			return *this;
		}
		else if(-1 == iComp)
			Subtract(roLN.m_oNumber, m_oNumber, oLNRes.m_oNumber);
		else
			Subtract(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
		if(1 == m_cSign && -1 == roLN.m_cSign)
		{
			if(-1 == iComp)
				m_cSign = -1;
			else
				m_cSign = 1;
		}
		else
		{
			if(-1 == iComp)
				m_cSign = 1;
			else
				m_cSign = -1;
		}
	}
	m_oNumber = oLNRes.m_oNumber;
	return *this;
}

inline CLargeNumber& CLargeNumber::operator-=(CLargeNumber const& roLN)
{
	CLargeNumber oLNRes;
	if(1 == m_cSign && -1 == roLN.m_cSign)
	{
		m_cSign = 1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else if(-1 == m_cSign && 1 == roLN.m_cSign)
	{
		m_cSign = -1;
		Add(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	}
	else
	{
		int iComp = Compare(m_oNumber, roLN.m_oNumber);
		if(0 == iComp)
		{
			*this = CLargeNumber(0);
			return *this;
		}
		else if(-1 == iComp)
			Subtract(roLN.m_oNumber, m_oNumber, oLNRes.m_oNumber);
		else
			Subtract(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
		if(1 == m_cSign && 1 == roLN.m_cSign)
		{
			if(-1 == iComp)
				m_cSign = -1;
			else
				m_cSign = 1;
		}
		else
		{
			if(-1 == iComp)
				m_cSign = 1;
			else
				m_cSign = -1;
		}
	}
	m_oNumber = oLNRes.m_oNumber;
	return *this;
}

CLargeNumber& CLargeNumber::operator*=(CLargeNumber const& roLN)
{
	CLargeNumber oLNRes;
	m_cSign = m_cSign * roLN.m_cSign;
	Multiply(m_oNumber, roLN.m_oNumber, oLNRes.m_oNumber);
	*this = oLNRes;
	return *this;
}
	
CLargeNumber& CLargeNumber::operator/=(CLargeNumber const& roLN)
{
	if(roLN<CLargeNumber("0"))
		//Throw an exception
		throw overflow_error("ERROR: Overflow in operator /=!");
	if(0==Compare(m_oNumber, CLargeNumber("0").m_oNumber))
	{
		*this = CLargeNumber("0");
	}
	else
	{
		CLargeNumber oLNQ, oLNDummy;
		Divide(m_oNumber, roLN.m_oNumber, oLNQ.m_oNumber, oLNDummy.m_oNumber);
		oLNQ.m_cSign = (-1==m_cSign)&&(-1==roLN.m_cSign)||(1==m_cSign)&&(1==roLN.m_cSign) ? 1 : -1;
		*this = oLNQ;
	}
	return *this;
}

CLargeNumber& CLargeNumber::operator%=(CLargeNumber const& roLN)
{
	if(roLN<CLargeNumber("0"))
		//Throw an exception
		throw overflow_error("ERROR: Overflow in operator%=!");
	if(0==Compare(m_oNumber, CLargeNumber("0").m_oNumber))
	{
		*this = CLargeNumber("0");
	}
	else
	{
		CLargeNumber oLNDummy, oLNR;
		Divide(m_oNumber, roLN.m_oNumber, oLNDummy.m_oNumber, oLNR.m_oNumber);
		oLNR.m_cSign = m_cSign;
		*this = oLNR;
	}
	return *this;
}

//Convertion operator
inline CLargeNumber::operator int() const
{
	CLargeNumber oLNMin(INT_MIN);
	CLargeNumber oLNMax(INT_MAX);
	if(operator<(oLNMin) || operator>(oLNMax))
		//Throw an exception
		throw domain_error("ERROR: Domain in operator int()!");
	unsigned uPow10 = 1;
	int iRes = 0;
	if(-1==m_cSign)
	{
		for(int i=0; i<m_oNumber.size(); i++)
		{
			iRes -= m_oNumber[i]*uPow10;
			uPow10 *= 10;
		}
	}
	else
	{
		for(int i=0; i<m_oNumber.size(); i++)
		{
			iRes += m_oNumber[i]*uPow10;
			uPow10 *= 10;
		}
	}
	return iRes;
}

//Square Root
inline CLargeNumber CLargeNumber::SquareRoot() const
{
	if(operator<(CLargeNumber("0")))
		//Throw an exception
		throw invalid_argument("ERROR: Negative Number in function SquareRoot()!");
	//Initialize	
	CLargeNumber oNumber1 = *this;
	CLargeNumber oLN0(0);
	CLargeNumber oLN2(2);
	CLargeNumber oLN10(10);
	CLargeNumber oLN100(100);
	CLargeNumber oSqR(oLN10);
	while((oNumber1 /= oLN100) > oLN0)
	  oSqR *= oLN10;
	//Recursive Algorithm
	CLargeNumber oSqROld;
	while(true)
	{
		oSqROld = oSqR;
		oSqR = (oSqR + (*this)/oSqR)/oLN2;
		if(oSqR >= oSqROld)
		{
			oSqR = oSqROld;
			return oSqR;
		}
	}
}

//=====================================================================

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久综合九色合综国产精品| 日韩成人免费看| 一区二区三区中文字幕电影| 亚洲一区免费在线观看| 日韩精品亚洲一区| 国产伦精品一区二区三区在线观看 | 亚洲图片另类小说| 夜夜爽夜夜爽精品视频| 男人操女人的视频在线观看欧美| 国产一区二区三区综合| 日本精品一级二级| 91精品国产色综合久久不卡电影| 久久免费的精品国产v∧| 日韩一区中文字幕| 日韩电影在线免费| 成人综合激情网| 欧美综合一区二区| 精品国产99国产精品| 国产精品嫩草影院com| 亚洲一级在线观看| 国产精品一线二线三线精华| 成人不卡免费av| 欧美精选在线播放| 欧美国产日韩亚洲一区| 亚洲成a人片在线不卡一二三区| 狠狠色丁香婷婷综合| 欧美在线一二三| 久久久777精品电影网影网 | 欧洲亚洲精品在线| 久久久亚洲精品石原莉奈 | 99免费精品在线| 欧美一区二区日韩| 亚洲视频每日更新| 激情五月激情综合网| 欧美三级日本三级少妇99| 国产三级三级三级精品8ⅰ区| 亚洲一区二区美女| 国产精品一卡二| 欧美一级欧美三级在线观看| 中文字幕一区二区三区视频| 精品无码三级在线观看视频| 欧美图区在线视频| 亚洲天天做日日做天天谢日日欢 | 在线国产电影不卡| 国产婷婷一区二区| 久久精品国产999大香线蕉| 色94色欧美sute亚洲线路一ni | 久久国产夜色精品鲁鲁99| 91久久免费观看| 国产精品视频一二三区| 久草这里只有精品视频| 欧美日韩一级黄| 国产成人免费9x9x人网站视频| 精品国产乱码久久久久久久| 日韩高清一区二区| 色综合久久久久综合体| 欧美激情资源网| 精品一区二区精品| 欧美成人性福生活免费看| 天堂va蜜桃一区二区三区| 国产日本欧美一区二区| 久久在线免费观看| 全部av―极品视觉盛宴亚洲| 日本精品视频一区二区三区| 成人欧美一区二区三区1314| 国产一区二区不卡| 亚洲精选视频在线| 久久综合久色欧美综合狠狠| 手机精品视频在线观看| 成人激情动漫在线观看| 蜜臀av一区二区在线免费观看| 免费观看91视频大全| 国产久卡久卡久卡久卡视频精品| 日韩一区二区不卡| 青青草91视频| 欧美一区二区不卡视频| 天堂久久一区二区三区| 欧美日本精品一区二区三区| 亚洲一级二级在线| 欧美中文字幕亚洲一区二区va在线| 亚洲手机成人高清视频| 99久久精品国产导航| 99久久婷婷国产综合精品 | 日本不卡视频在线| 欧美福利视频导航| 偷拍自拍另类欧美| 欧美日本国产一区| 久久精品免费观看| 精品成a人在线观看| 精品一二线国产| 国产午夜精品福利| av在线免费不卡| 亚洲人成人一区二区在线观看| 99精品久久99久久久久| 一区二区在线观看免费| 欧美在线综合视频| 日韩精品免费视频人成| 欧美成va人片在线观看| 国产成人精品三级麻豆| 亚洲丝袜自拍清纯另类| 欧美专区日韩专区| 天天爽夜夜爽夜夜爽精品视频| 欧美一级在线观看| 九色综合国产一区二区三区| 久久日一线二线三线suv| 粉嫩欧美一区二区三区高清影视 | zzijzzij亚洲日本少妇熟睡| 亚洲欧美韩国综合色| 欧美色视频一区| 丝袜诱惑亚洲看片| 久久亚洲精品小早川怜子| 大尺度一区二区| 亚洲精品免费播放| 欧美疯狂做受xxxx富婆| 国产乱码精品1区2区3区| 国产精品福利一区二区| 欧美日韩国产成人在线免费| 韩国毛片一区二区三区| 亚洲素人一区二区| 欧美一区二区三区在线看| 国产酒店精品激情| 亚洲高清中文字幕| 久久久久久毛片| 色狠狠av一区二区三区| 久久精品国产色蜜蜜麻豆| 国产精品毛片高清在线完整版| 欧美色大人视频| 国内精品在线播放| 一级做a爱片久久| 精品av久久707| 日本高清不卡aⅴ免费网站| 免费欧美高清视频| 亚洲欧洲av一区二区三区久久| 欧美剧情片在线观看| gogo大胆日本视频一区| 麻豆中文一区二区| 亚洲一区二区影院| 精品国产麻豆免费人成网站| 99久久精品免费看国产| 久久国产成人午夜av影院| 亚洲欧美另类久久久精品2019 | 经典一区二区三区| 亚洲一区在线看| 国产日产欧美一区| 欧美精品在欧美一区二区少妇| 成人永久看片免费视频天堂| 三级不卡在线观看| 国产精品久久久久三级| 26uuu亚洲| 欧美伦理电影网| 色偷偷成人一区二区三区91| 国产一二精品视频| 裸体一区二区三区| 亚洲午夜精品久久久久久久久| 国产精品青草久久| 26uuu亚洲| 欧美一二三在线| 欧美日韩一区在线| 一本久久精品一区二区| 成人短视频下载| 国产精品自拍网站| 久久精品国产精品亚洲精品| 亚洲一区二区三区四区五区中文 | 91免费观看国产| 国产福利一区二区| 国产一区二区三区蝌蚪| 丝袜国产日韩另类美女| 亚洲激情成人在线| 18欧美乱大交hd1984| 久久久久久久网| 日韩精品专区在线| 欧美一级夜夜爽| 欧美日本国产一区| 欧美日韩精品一区二区三区蜜桃 | 中文字幕高清一区| 日韩欧美高清dvd碟片| 7777精品伊人久久久大香线蕉超级流畅| 99热在这里有精品免费| 国产suv精品一区二区三区| 韩国三级在线一区| 国产精品中文字幕一区二区三区| 久久99国产精品久久99果冻传媒| 日一区二区三区| 天涯成人国产亚洲精品一区av| 一区二区三区免费网站| 国产精品白丝在线| 中文字幕一区二区三区四区| 欧美激情在线观看视频免费| 国产午夜精品理论片a级大结局 | 成人毛片老司机大片| 风间由美一区二区av101 | 中文字幕精品一区二区三区精品| 亚洲精品一区二区三区福利| 精品999久久久| 久久久久97国产精华液好用吗| 久久久亚洲欧洲日产国码αv| 久久久一区二区三区| 国产午夜精品久久久久久免费视| 欧美国产激情二区三区| 国产精品黄色在线观看 |