HDU6641TDL

  • 题目链接
  • 解题思路

题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=6641

解题思路

f ( n , m ) f(n,m) f(n,m) 表示大于 n n n 且与 n n n 互质的第 m m m 个数。 k = ( f ( n , m ) − n ) ⨁ n k=(f(n,m)-n) \bigoplus n k=(f(n,m)−n)⨁n,根据位异或运算的性质: n = k ⨁ ( f ( n , m ) − n ) n=k \bigoplus (f(n,m)-n) n=k⨁(f(n,m)−n)。根据 f ( n , m ) f(n,m) f(n,m) 的定义有: f ( n , m ) ≥ n + m f(n,m) \ge n+m f(n,m)≥n+m,所以 f ( n , m ) − n ≥ m f(n,m)-n \ge m f(n,m)−n≥m。
令 f = f ( n , m ) − n f=f(n,m)-n f=f(n,m)−n。接着,我们只需要枚举可能的 f f f 的值即可,根据上面的推断 f f f 的下界是 m m m,所以要确定它的上界,有一个根据质数密度得出的结论:大于 n n n 的第 m m m 的质数不会超过 n + m l o g ( m ) n+mlog(m) n+mlog(m)。和 n n n 互质的数不一定是质数,所以 f ( n , m ) ≤ n + m l o g ( m ) f(n,m) \le n+mlog(m) f(n,m)≤n+mlog(m)。 m m m 的最大值是 100,所以 f ≤ n + m l o g ( m ) − n = m l o g ( m ) ≤ 100 l o g ( 100 ) &lt; 100 × 7 = 700 f \le n+mlog(m)-n=mlog(m) \le100log(100) \lt 100\times7=700 f≤n+mlog(m)−n=mlog(m)≤100log(100)<100×7=700。
根据上面的推断,我们枚举 f f f 的值,从 m m m 到 700,求出 n,然后回头判断 n 是否满足条件,然后选出最小的 n 就行了。
源代码如下:

#include <cstdio>
#include <iostream>
#include <algorithm>
#define ll long long
#define MAX 0x3fffffffffffffff
using namespace std;ll gcd(ll x, ll y) {    ll z = y;while(x%y!=0) {z = x%y;x = y;y = z;}return z;
}ll judge(ll n, int m) {if (n < 1) return 0;ll x;for (x = n+1; ; ++x) {if (gcd(n, x) == 1) {--m;if (m == 0) break;}}return x-n;
}int main(int argc, char** argv) {int T, m;ll k, ans, n;cin >> T;while (T--) {ans = -1;scanf("%lld%d", &k, &m);for (int f = m; f < 700; ++f) {n = k^f;if (judge(n, m) == f) {if (ans == -1) {ans = n;}else {ans = min(ans, n);}}}printf("%lld\n", ans);}return 0;
}

HDU6641TDL相关推荐

  1. 杭电6TDL(暴力)

    杭电6TDL(暴力) 题目描述 For a positive integer n, let's denote function f(n,m) as the m-th smallest integer ...

最新文章

  1. 来自新手Banana Pi香蕉派初体验
  2. 1-6 数据查询(下)——复杂查询
  3. .net core 文件流保存图片_使用JSDelivr加速Github、博客文件
  4. java类与对象_Java类与对象
  5. C++Opengl三维列表堆罗汉源码
  6. java面向对象的特征二:继承性 —(14)
  7. 关于castle和Could not find the dialect in the configuration错误
  8. Xcode做简易计算器
  9. Mvvm 前端数据流框架精讲
  10. Java、JSP员工考勤管理系统
  11. Quartz 定时任务时间表达式说明
  12. Java实验输出希腊字母表
  13. (图像加密)常用图像置乱算法matlab实现(二)
  14. 笔记本电脑频繁假死的一个解决办法
  15. 用opencv画一个笑脸的图像
  16. 解读|Cocos新平台、新生态的行业意义
  17. TCP三次握手以及与UDP的区别
  18. esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?
  19. 手工搭建多层(多隐藏层)BP神经网络
  20. Hadoop综合试题5

热门文章

  1. android这个软件在哪里设置,怎么设置安卓手机软件的默认安装位置
  2. 数字逻辑 Chapter 5——同步时序逻辑电路
  3. ubuntu的 Files资源管理器打不开解决方案(桌面文件夹打不开)
  4. JAVA毕业设计高校贫困生信息管理系统计算机源码+lw文档+系统+调试部署+数据库
  5. Linux系统安装Nginx教程
  6. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?_小晓_同学__新浪博客...
  7. Spring - BeanDefinitionRegistryPostProcessor 扩展接口 动态注册bean
  8. 计算机 节能措施,电脑(计算机)耗电知多少(及节能节电措施及建议)
  9. python 使用pyqt5实现了一个汽车配件记录系统
  10. 测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例