題目:把同時不能被2,3,5整除的數叫做神奇數。給你一個區間l,r(從l到r)。這個區間裡面有多少個神奇數。(l,r<231-1)
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
輸入:包含多組數據,每組數據有2個數了l,r。
輸出:輸出這個區間裡面神奇數的個數,輸出占一行。
樣例輸入:0 10
樣例輸出:2
思想:容斥思想
從1到n能被2整除的數有n/2個,能被3整除的數有n/3個,能被5整除的數有n/5個。
所以從1到n裡面的神奇數的個數是n-n/2-n/3-n/5嗎?
不是有的數能被2,3整除,有的數能被2,5整除,有的數能被3,5整除,有的數能被2,3,5整除。
所以從1到n的神奇數的個數應該是n-n/2-n/3-n/5+n/6+n/10+n/15+n/30。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int l,r;
int a,b,c,d,e,f,g;
int gg;
while(scanf("%d%d",&l,&r)!=EOF)
{
if(l>=2)
{
a=(l-1)/2;b=(l-1)/3;c=(l-1)/5;d=(l-1)/6;e=(l-1)/10;f=(l-1)/15;g=(l-1)/30;
gg=(l-1)-a-b-c+d+e+f+g;
}
else gg=0;
a=r/2;b=r/3;c=r/5;d=r/6;e=r/10;f=r/15;g=r/30;
gg=r-a-b-c+d+e+f+g-gg;
cout<<gg<<endl;
}
return 0;
}