从1到N能整除X的数有【N/X】个
从1到N不能整除X的数有【N-N/X】个
从1到N能整除X且整除Y的个数有【N/X+N/Y-N/(X*Y)】个
找到一个数V,使从1到V,至少有cnt1个数不能整除x,剩下的数至少有cnt2个数不能整除y
解:若一个数mid,有
(mid-mid/x)>=cnt1 && (mid-mid/y)>=cnt2 && (mid-mid/(x*y))>=cnt1+cnt2//总共可以分配的个数大于所需求的个数
则m符合条件,往比m小的数找
给N间房间,一些房间是空的,一间房间是住着人的,有一个人住在某一件房间,他的k只羊住在k间房间,问他的羊离他的最大距离最小为多少
解:枚举每个能住的房间,以改房间为中点,l为最少往两边扩展的房间,r为最多往两边扩展的房间,mid=(l+r)/2,如果该房间左边mid个房间+右边mid个房间可以住大于k只羊,那么最多扩展区间减少,否则最少扩展区间增加
注意:当扩展的房间可以住等于k只羊的时候更新答案,为了保证等于k只羊的时候没有退出二分,判断条件l<=r,每次更新的时候,l=mid+1 或者 r=mid-1