#include<stdio.h>
int main()
{
int i,n,jk;
while(scanf("%d",&n)!=EOF)
{ jk=0;
i=(n-(n%5))/5;
jk=i;
i=(n-(n%6))/6;
jk=jk+i;
i=(n-(n%8))/8;
jk=jk+i;
i=(n-(n%24))/24;
jk=jk-i;
i=(n-(n%30))/30;
jk=jk-i;
i=(n-(n%40))/40;
jk=jk-i;
i=(n-(n%120))/120;
jk=jk+i;
printf("%d\n",jk);
}
return 0;
}
/***************************************************
User name: royalwhite
Result: Accepted
Take time: 4ms
Take Memory: 148KB
Submit time: 2018-10-16 22:57:42
****************************************************/
这道题第一次做的时候只考虑了整除5 6 8 没有考虑到重复的部分 后来经过同学提醒在网上找到了容斥定理,研究后发现要减去重复的地方,加上多减去的地方 方法如上;