真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

??透傎惷咳諅z題-Day11-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司主營天峨網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,天峨h5微信平臺小程序開發(fā)搭建,天峨網(wǎng)站營銷推廣歡迎天峨等地區(qū)企業(yè)咨詢

錯排問題

有理數(shù)運算


錯排問題

年會抽獎__??途W(wǎng)

全部都不獲獎的概率必定是由n個人都拿錯的情況種數(shù)n個人拿出的所有排列情況數(shù)。
n個人拿出的所有排列情況數(shù)顯然是n的階乘。

假設(shè)a的名字沒有被a拿到,其他n - 1個人都有可能拿到,即有n - 1種情況。假設(shè)b拿到了a的名字,那么對于b的名字有兩種情況:

  • 第一種是b的名字被a拿到了,也就是a、b互相拿到了對方的名字,那么對于其他n - 2個人互相拿錯又是一個子問題f(n - 2).
  • 第二種是b的名字沒有被a拿到,則剩下的問題是子問題f(n - 1).

因此可得遞推公式f(n) = (n - 1) * (f(n - 1) + f(n - 2)).

最終得出公式n人都不獲獎的概率h(n) = (n - 1) * (f(n - 1) + f(n - 2)) / (n!)

#include#includeint main()
{
	long long d[21] = { 0, 0, 1 }; // 錯排數(shù)量,預(yù)留第一項為0,配合下文中輸入的n
	long long f[21] = { 1, 1, 2 }; // 階乘
	for (int i = 3; i<= 20; i++)
	{
		d[i] = (i - 1) * (d[i - 1] + d[i - 2]); //錯排的遞推公式
		f[i] = i * f[i - 1]; //階乘的遞推公式
	}
	int n;
	while (std::cin >>n)
	{
		printf("%.2f%%\n", 100.0 * d[n] / f[n]); //用100.0來把結(jié)果處理成double,保留兩位小數(shù)
	}
	return 0;
}

有理數(shù)運算

Rational Arithmetic (20)__牛客網(wǎng)

實現(xiàn)對兩個有理數(shù)的基本運算,包括加、減、乘、除。 輸入描述: 每個輸入文件只包含一個測試用例,測試用例會給出一行數(shù)據(jù),格式為 “a1/b1 a2/b2”分子分母的范圍都在長整型的范圍內(nèi),如果數(shù)字為負,則符號只會出現(xiàn)在分子的前面。分母一定是非零數(shù)。 輸出描述: 針對每個測試用例,都輸出四行,分別是這兩個有理數(shù)的和、差、積和商,格式為 “ 數(shù) 1 操作符 數(shù) 2 = 結(jié)果 ” 。注意,所有的有理數(shù)都將遵循一個簡單形式 “k a/b” ,其中 k 是整數(shù)部分, a/b 是最簡分數(shù)形式,如果該數(shù)為負數(shù),則必 須用括號包起來。如果除法中的除數(shù)為 0 ,則輸出 “Inf” 。結(jié)果中所有的整數(shù)都在 long int 的范圍內(nèi)。

C++標準類寫法:

#includeusing namespace std;
typedef long long int64;

class Rational
{
public:
	Rational(int64 n, int64 d)
	{
		negetive = false;
		isZero = false;
		// 在輸入時分母永遠不可能為0,但是經(jīng)過運算之后分母可能為0
		if (0 == d)
		{
			isZero = true;
			return;
		}
		// 分子小于0,表示為負數(shù)
		if (n< 0)
		{
			negetive = !negetive;
		}
		// 在輸入時分母一定不會小于0, 但是經(jīng)過計算之后分母也可能會小于0
		if (d< 0)
		{
			negetive = !negetive;
		}
		// 如果分數(shù)是假分數(shù),必須要將其化簡為真分數(shù) 比如:5 / 3---->1 2/3
		integer = n / d;
		numerator = n - integer * d;
		denominator = abs(d);
		// 如果不是最簡的分數(shù),還需要將其化簡為最簡的分數(shù): 10 / 15 ---->2 / 3
		// 只需給分子和分母分別除分子和分母大公約數(shù)
		if (numerator< -1 || numerator >1)
		{
			int gcd = CalcGCD(abs(numerator), denominator);
			if (gcd)
			{
				numerator /= gcd;
				denominator /= gcd;
			}
		}
		totalnumerator = integer * denominator + numerator;
	}
	Rational operator+(const Rational& r)const

	{
		int64 n = totalnumerator * r.denominator + r.totalnumerator * denominator;
		int64 d = denominator * r.denominator;
		return Rational(n, d);
	}
	Rational operator-(const Rational& r)const
	{
		int64 n = totalnumerator * r.denominator - r.totalnumerator * denominator;
		int64 d = denominator * r.denominator;
		return Rational(n, d);
	}
	Rational operator*(const Rational& r)const
	{
		int64 n = totalnumerator * r.totalnumerator;
		int64 d = denominator * r.denominator;
		return Rational(n, d);
	}
	Rational operator/(const Rational& r)const
	{
		int64 n = totalnumerator * r.denominator;
		int64 d = denominator * r.totalnumerator;
		return Rational(n, d);
	}
private:
	// 求大公約數(shù):輾轉(zhuǎn)相除
	int64 CalcGCD(int64 a, int64 b)
	{
		if (0 == b)
			return a;
		return CalcGCD(b, a % b);
	}

	friend ostream& operator<<(ostream& _cout, const Rational& r)
	{
		if (r.isZero)
		{
			_cout<< "Inf";
			return _cout;
		}
		if (0 == r.integer && 0 == r.numerator)
		{
			_cout<< "0";
			return _cout;
		}
		// 如果是負數(shù),需要用()括起來
		if (r.negetive)
		{
				_cout<< "(-";
		}
		// 輸出有理數(shù):整數(shù) + 分數(shù)
		// 整數(shù): 可能存在也可能不存在
		if (r.integer)
		{
			_cout<< abs(r.integer);
			// 如果分數(shù)部分存在,整數(shù)和分數(shù)之間有一個空格
			if (r.numerator)
			{
				_cout<< " ";
			}
		}
		// 分數(shù): 可能存在也可能不存在
		if (r.numerator)
		{
			_cout<< abs(r.numerator)<< "/"<< r.denominator;
		}
		if (r.negetive)
		{
			_cout<< ")";
		}
		return _cout;
	}
private:
	int64 numerator; // 分子
	int64 denominator; // 分母
	int64 integer; // 整數(shù)部分
	bool negetive; // 負數(shù)
	bool isZero; // 分母是否為0
	int64 totalnumerator; // 參與運算的分子:原分子 + 整數(shù)部分
};

int main()
{
	int64 n1, d1, n2, d2;
	while (scanf("%lld/%lld %lld/%lld", &n1, &d1, &n2, &d2) != EOF)
	{
		Rational r1(n1, d1);
		Rational r2(n2, d2);
		cout<< r1<< " + "<< r2<< " = "<< r1 + r2<< endl;
		cout<< r1<< " - "<< r2<< " = "<< r1 - r2<< endl;
		cout<< r1<< " * "<< r2<< " = "<< r1 * r2<< endl;
		cout<< r1<< " / "<< r2<< " = "<< r1 / r2<< endl;
	}
	return 0;
}

C語言強行模擬:

#include#includeusing namespace std;

typedef long long ll;

ll gcd(ll a,ll b)
{
    if(b==0) return a;
    return gcd(b,a%b);
}

void totout(ll n,ll d)
{
    if(d==0){
        cout<<"Inf"<

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁標題:??透傎惷咳諅z題-Day11-創(chuàng)新互聯(lián)
鏈接URL:http://weahome.cn/article/phsgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部