小 Z 和小 J 希望得到两个正整数 n,m(1≤m≤n)n,m(1≤m≤n),而这两个数已经被人销毁。
但幸运的是,在犯案现场留下了一个分数 xy。根据小 Z 的推测,xy是 1,2,⋯,n1,2,⋯,n 的平均数但 m 中并没有被加入的结果。也就是说,xy 为 1,2,⋯,m−2,m−1,0,m+1,⋯,n1,2,⋯,m−2,m−1,0,m+1,⋯,n 共 n个数的平均数。
小 Z 想知道有哪些可能的初始的数,但不希望直接被人看到,所以请你给出对于所有解把 (n+m)异或起来的答案。
输入格式
第一行包含一个整数 T。
接下来 T 行,每行包含两个整数 x,y。
输出格式
输出 T 行,每行一个整数。假如无解请输出
-1。
样例输入
3
5 5
10 7
8 2
样例输出
5
-1
30
样例解释
对于第一组数据,有 (n,m)=(2,1)或 (3,3)。
对于第三组数据,有 (n,m)=(8,4)或 (9,9)。
数据范围
对于所有的数据,满足 1≤T≤1000,1≤x≤10^18,1≤y≤10^9
对于前 30%的数据,满足 1≤x≤20,1≤y≤5
对于前 60% 的数据,满足 1≤x≤10^8,1≤y≤10000
c++小 Z 和小 J 想在今天探大案!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- RWLinno 2022-07-18 21:30关注
获得1.25元问题酬金 看不懂再私信我要解释。
void Solve(){ //cin>>x>>y; x=read();y=read(); int flag=0,ans=0; for(int i=max((int)1,2*x/y-1),m;i<=2*x/y+1;++i){ m=i*(i+1)/2-i*x/y; if(1<=m&&m<=i){ if(i*(i+1)*y-2*m*y==2*x*i) ans^=i+m,flag=1; } } if(flag) write(ans),putchar('\n');//cout<<ans<<"\n"; else puts("-1");//cout<<"-1\n"; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表