1e9個兵臨城下(容斥原理)
阿新 • • 發佈:2019-01-06
連結: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; }