慕唯昕 2022-07-18 19:20 采纳率: 50%
浏览 77
已结题

c++小 Z 和小 J 想在今天探大案!

小 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

  • 写回答

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";
    }
    
    评论

报告相同问题?

问题事件

  • 系统已结题 7月26日
  • 创建了问题 7月18日

悬赏问题

  • ¥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腾讯文档收集表