基准时间限制:1 秒 空间限制:131072 KB 分值: 5
难度:1级算法题
给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。
Input
输入1个数N(1 <= N <= 10^18)。
Output
输出不是2 3 5 7的倍数的数共有多少。
Input示例
10
Output示例
1
最近在学容斥定理,基础题目
<span style="font-size:18px;">#include<cstdio>
typedef long long LL;
LL ans[20]={2,3,5,7,6,10,14,15,21,35,30,42,105,70,210};
int main()
{
LL n;
scanf("%lld",&n);
LL i,sum=0,sum1=0,sum2=0,sum3=0;
for(i=0;i<15;++i)
{
if(i<=3)
{
sum+=n/ans[i];
continue;
}
if(i<=9)
{
sum1+=n/ans[i];
continue;
}
if(i<=13)
{
sum2+=n/ans[i];
continue;
}
if(i==14)
sum3+=n/ans[i];
}
LL result=sum-sum1+sum2-sum3;
printf("%lld\n",n-result);
return 0;
} </span>