题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6641

题目:


Problem Description

For a positive integer n, let's denote function f(n,m) as the m-th smallest integer x that x>n and gcd(x,n)=1. For example, f(5,1)=6 and f(5,5)=11.

You are given the value of m and (f(n,m)−n)⊕n, where ``⊕'' denotes the bitwise XOR operation. Please write a program to find the smallest positive integer n that (f(n,m)−n)⊕n=k, or determine it is impossible.

Input

The first line of the input contains an integer T(1≤T≤10), denoting the number of test cases.

In each test case, there are two integers k,m(1≤k≤1018,1≤m≤100).

Output

For each test case, print a single line containing an integer, denoting the smallest n. If there is no solution, output ``-?'' instead.

Sample Input

2

3 5

6 100

Sample Output

5

-1

解题思路:


可以拿程序跑一下就能推测出:比n大且和n的gcd值=1的数相邻得比较紧密,f(n,100)-n不是很大,只有几百左右(有人说最多五百多),即然不知道准确的数是多少,那就定f(n,100)-n最大是1000吧。

 令, 那么,下面只需要根据这个n求得,验证是否满足这个等式即可,去满足条件的最小的n

⚠️ 可能是0,要特判一下!

最坏的时间复杂度:O(1000 * 100 *T)=O(1e6)

ac代码:


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 1000000;
ll k;
int M, t;
ll gcd(ll a, ll b)
{return b == 0 ? a : gcd(b, a % b);
}
bool judge(ll n)
{ll x = n;int m = M;while(m){x++;//退出循环时x表示f(n,m)if(gcd(x, n) == 1)m--;}if(((x-n)^n) == k) return true; // (f(n, m)- n) ^ n == k ?else return false;}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d", &t);while(t--){scanf("%lld %d", &k, &M);ll ans = -1;//f(1000,100)=1249for(ll i = 1; i < 1000; i++) //枚举f(n,m)-n{ll n = i^k; // n = (f(n,m)-n)^kif(n && judge(n)) // 判断这个n是否满足等式{if(ans == -1) ans = n;else ans = min(ans, n); // 更新最小值}}printf("%lld\n", ans);}return 0;
}

【2019杭电多校第六场1008=HDU6641】TDL(思维)相关推荐

  1. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  2. 杭电多校第六场个人补题6 7 9 10 12

    杭电多校第六场个人补题6 7 9 10 12 6 题意 给定一棵有n结点的树,点权为1~n,求对所有结点子树的mex操作和的最大值 思路 其实就是从最底部开始网上找,由于0是唯一的一个,所欲最好给在最 ...

  3. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  4. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  5. 杭电多校第六场-J-Ridiculous Netizens

    Problem Description Mr. Bread has a tree T with n vertices, labeled by 1,2,-,n. Each vertex of the t ...

  6. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  7. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  8. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  9. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

  10. 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...

最新文章

  1. html 点击一行变色,elementui点击table每一行会变色,当有固定列的时候,
  2. 在使用win 7 无线承载网络时,启动该服务时,有时会提示:组或资源的状态不是执行请求操作的正确状态。 网上有文章指出,解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配
  3. 基于函数的二叉树的描述
  4. 最短路径问题 图论
  5. [2003] Can't connect to MySQL server on 'localhost' (13) 错误解决方法 【主要是linux下php连接不上mysq时】...
  6. SqlServer触发器常用语法AFTER、INSTEAD OF及其详解
  7. 《区块链技术指南》笔记
  8. 蚁群算法原理及Matlab实现
  9. 视频号推荐机制:可社交裂变冷启动
  10. Ubuntu 升级显卡驱动
  11. 我们一起追逐过的大肥猫——tomcat部署
  12. 流文件和媒体文件的不一样( flv和mp4,avi的区别)
  13. 关于IOS设备window onscroll滚动条滚动事件不触发的问题
  14. 示波器X1探头和X10探头
  15. 推荐语、学生和网友留言——《逆袭大学》连载
  16. 批处理修改注册表调整输入法
  17. JSP之数据库连接池·笔记
  18. 局域网两台计算机网速,多台电脑在同一个局域网内如何合理分配网速上网
  19. nec容错服务器安装系统,NEC的容错服务器简介
  20. word文档批量合并工具

热门文章

  1. Cisco笔记1-访问CISCO 路由器的方法
  2. 下午,无心编程,读小诗...
  3. java——题型和考点大纲
  4. php隐藏json数据,PHP调用出json后出来的数目字 想隐藏掉 50份求高手帮忙下
  5. redhat 复制文件夹及子文件夹_Docker COPY 复制文件夹的诡异行为
  6. 2021海口高考调研成绩查询,2021海口市地区高考成绩排名查询,海口市高考各高中成绩喜报榜单...
  7. linux查看行数命令 set,Linux显示文件行数之nl命令详解
  8. python最简单的爬取邮箱地址怎么写_用python60行代码写一个简单的笔趣阁爬虫!三分一章?...
  9. Error running ‘Tomcat x.x.xx‘: Address localhost:xxxx is already in use
  10. python 对象和json互相转换