题目是给出m,k。找到跟第k个跟m互素的数是多少。
构造肯定不行,再加上数据范围,只能二分。思路是二分枚举[1,2^64]范围内所有的数x,找到1到x范围内与m不互素的数的个数y(用容斥原理)。然后用x - y,如果等于k就是结果。
找到1到x范围内与m不互素的数的个数y:这个过程可以先把m分解质因子,记录m所有的质因子。f[i]表示含有i个质因子的数的个数。ans = m - f(1) + f(2) - f(3) ....
ps:这里二分要找满足 == k最左边的数,推了半天发现把二分写错了。。。T_T
//#pragma comment(linker,"/STACK:327680000,327680000")#include #include #include #include #include #include #include #include #include #include #include #include #include