1. 程式人生 > >1e9個兵臨城下(容斥原理)

1e9個兵臨城下(容斥原理)

連結:https://ac.nowcoder.com/acm/contest/321/A
來源:牛客網
 

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 32768K,其他語言65536K
64bit IO Format: %lld

題目描述

 “FF來訓練!”“一定來!”

 

 

FF成天到晚咕了NE的訓練。這可把NE急壞了。為了拯救ff的知識勺,擁有知識海的NE決定去現實gank一波FF,逼他訓練。

可去gank了幾波發現ff居然有著成千上萬的小夥伴在幫助FF阻攔NE,這幾次gank,NE都失敗了。無奈之下痛定思痛,NE決定也帶上自己的109個小夥伴去gankFF。

FF提前得知了這個訊息,這可把FF急壞了.那可是109個人啊!

這時FF的小夥伴EN說:“FF莫慌,我這裡有3盞BD哥的神燈,上面分別有一個素數,可以讓編號被上面的數字整除的人昏睡過去,這樣就可以大大削減NE的人數!”(FF所帶的109個人分別被編號為1~109)

FF:“好!”。FF如同找到了救命稻草。但是由於只能削減一部分人數,FF需要召集的人數應該大於等於NE剩下的人數,但是時間緊急,FF算不出來了,你能告訴FF至少要準備多少人嗎?

 

輸入描述:

 

第一行包含一個正整數T(T<200)

之後的T行每行包含3個正整數,a,b,c(2<=a,b,c<106;a!=b,b!=c,c!=a;保證a,b,c為素數)

分別代表3盞神燈上的數字。

輸出描述:

輸出T行
每行一個整數,表示FF至少要準備的人數。

示例1

輸入

複製

3
2 3 5
5 7 11
13 2 3

輸出

複製

266666666
623376624
307692308

題解:

容斥原理

程式碼:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>

using  namespace std;


int main()
{
	
	int T;
	cin>>T;
	for(int t=0;t<T;t++)
	{
		long long int a,b,c;
		scanf("%lld%lld%lld",&a,&b,&c);
		long long int sum=1000000000;
		long long int a1,a2,a3,a4,a5,a6,a7;
		a1=sum/a;
		a2=sum/b;
		a3=sum/c;
		a4=sum/(a*b);
		a5=sum/(a*c);
		a6=sum/(b*c);
		a7=sum/(a*b*c);
		//cout<<a1+a2+a3-a4-a5-a6+a7<<endl;
		long long int s=sum-(a1+a2+a3-a4-a5-a6+a7);
		cout<<s<<endl;
	  
		//cout<<sum<<endl;
	}
	
	return 0;
}