HDU6641TDL
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 ) < 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相关推荐
- 杭电6TDL(暴力)
杭电6TDL(暴力) 题目描述 For a positive integer n, let's denote function f(n,m) as the m-th smallest integer ...
最新文章
- 来自新手Banana Pi香蕉派初体验
- 1-6 数据查询(下)——复杂查询
- .net core 文件流保存图片_使用JSDelivr加速Github、博客文件
- java类与对象_Java类与对象
- C++Opengl三维列表堆罗汉源码
- java面向对象的特征二:继承性 —(14)
- 关于castle和Could not find the dialect in the configuration错误
- Xcode做简易计算器
- Mvvm 前端数据流框架精讲
- Java、JSP员工考勤管理系统
- Quartz 定时任务时间表达式说明
- Java实验输出希腊字母表
- (图像加密)常用图像置乱算法matlab实现(二)
- 笔记本电脑频繁假死的一个解决办法
- 用opencv画一个笑脸的图像
- 解读|Cocos新平台、新生态的行业意义
- TCP三次握手以及与UDP的区别
- esp8266灯上电闪一下_如何在ESP8266上实现变色呼吸灯效果?
- 手工搭建多层(多隐藏层)BP神经网络
- Hadoop综合试题5
热门文章
- android这个软件在哪里设置,怎么设置安卓手机软件的默认安装位置
- 数字逻辑 Chapter 5——同步时序逻辑电路
- ubuntu的 Files资源管理器打不开解决方案(桌面文件夹打不开)
- JAVA毕业设计高校贫困生信息管理系统计算机源码+lw文档+系统+调试部署+数据库
- Linux系统安装Nginx教程
- abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?_小晓_同学__新浪博客...
- Spring - BeanDefinitionRegistryPostProcessor 扩展接口 动态注册bean
- 计算机 节能措施,电脑(计算机)耗电知多少(及节能节电措施及建议)
- python 使用pyqt5实现了一个汽车配件记录系统
- 测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例