#847(Div3)E. Vlad and a Pair of Numbers

news2024/11/13 3:55:31
原题链接:

E. Vlad and a Pair of Numbers

题意:

题目有公式 a ⊕ b = ( a + b ) / 2 = x a ⊕ b = (a + b) / 2 = x ab=(a+b)/2=x, 给你的是 x x x,让输出一组满足题目要求的 a , b a,b ab,没有就输出 − 1 -1 1

解题:

首先分析异或的性质,不同为1,相同为0。所以可以把 x x x 给二进制化得到字符串s,在s是1的位置上 a a a b b b 肯定一个是0,一个是1。不妨假定把所有的1都给 a a a ,然后去分析 ( a + b ) / 2 (a + b) / 2 (a+b)/2,这就相当于把 a + b a + b a+b 右移一位,所以只要让 a a a b b b 在 s 为1的位置的上一个地方变成1就可以了,如果下一个位置的地方也是1的话就无解,输出-1。证明如下:
我们不妨通过 x x x 来反推 a + b a + b a+b,可以得到一个 1 的位置永远都比 x x x 的 1 的位置要往前一位,所以要得到这个二进制数只要在的1的后一位的地方变成1就好了,这里要是不懂得话就找一个数推一下,下面是一个例子。

10进制二进制
x001010100
a001111110
b000101010
a + b010101000

代码:

#include <bits/stdc++.h>

using namespace std;

#define int long long
typedef long long LL;
const int N = 5e5 + 10, mod = 998244353;

void solve()
{
    int n;
    cin >> n;
    int a = 0, b = 0;
    if (n & 1) cout << -1 << '\n';
    else 
    {
        for (int i = 1; i <= 30; i ++ )
        {
            if (n >> i & 1) 
            {
                if (n >> (i - 1) & 1)
                {
                    cout << -1 << '\n';
                    return;
                }
            }
        }

        for (int i = 1; i <= 30; i ++ )
        {
            if (n >> i & 1) 
            {
                a += 1 << i;
                a += 1 << (i - 1);
                b += 1 << (i - 1);
            }
        }
        cout << a << ' ' << b << '\n'; 
    }
}

signed main()
{
    int T = 1;
    cin >> T;
    while (T -- )
    {
        solve();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL DQL语句基础(一)

目录 DQL 基本语法 基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 条件查询 语法 条件 案例 聚合函数 常见的聚合函数 语法 DQL DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。 基…

java面试-jvm

JVM JVM 是 java 虚拟机&#xff0c;简单来说就是能执行标准 java 字节码的虚拟计算机 JVM 是如何工作的 首先程序在执行之前先要把 Java 代码&#xff08;.java&#xff09;转换成字节码&#xff08;.class&#xff09;&#xff0c;JVM 通过类加载器&#xff08;ClassLoade…

Linux:创建守护进程,注册信号捕获回调函数,使用shell脚本代码管理守护进程

1.创建守护进程&#xff0c;编译时命名为a.out. 2.在守护进程中注册信号捕捉函数。 3.使用脚本发送自定义信号SIGUSR1给进程a.out。 4.守护进程捕获函数catchSignal&#xff08;&#xff09;捕捉到10号函数SIGUSR1退出进程。 创建守护进程代码&#xff1a; #include <stdi…

第八批国家药品集中采购-(附药品集采目录明细下载)

2023年3月2日&#xff0c;‘国家组织药品联合采购办公室’发出了《全国药品集中采购文件》&#xff0c;宣告了第八批国家组织药品集中采购工作正式开展&#xff0c;其公告中还包含三个附表分别为‘采购品种目录’、‘各地区首年约定采购量’、‘各采购品种首年约定采购量’&…

python for循环中 if else语句缩进对应问题

python for循环中 if else语句缩进对应问题 忙里偷闲&#xff0c;备考计算机二级&#xff0c;发现一个好玩的小知识&#xff0c;想分享一下自己当时的思考以及解决问题的过程 也许点进来的你会莫名其妙&#xff0c;if和else语句的缩进必须对齐&#xff0c;这不是连初学者都一…

【数据结构】带你深入理解栈

一. 栈的基本概念&#x1f4ab;栈是一种特殊的线性表。其只允许在固定的一端进行插入和删除元素的操作&#xff0c;进行数据的插入和删除的一端称作栈顶&#xff0c;另外一端称作栈底。栈不支持随机访问&#xff0c;栈的数据元素遵循后进先出的原则&#xff0c;即LIFO&#xff…

怎么把pdf转换成图片?这个方法你值得拥有

想要高效率的工作&#xff0c;除了需要大家合理安排时间之外&#xff0c;一些能够辅助高效工作的工具也是必不可少的。就拿要把一份pdf文件转换成若干图片来说&#xff0c;如果不知道方法&#xff0c;找不到合适的转换工具&#xff0c;那么想要完成这一任务&#xff0c;势必要花…

万里长征——基础IO

目录 文件常识 回顾C语言的文件操作 系统层面的文件操作 文件操作的本质 文件fd的分配规则及重定向 linux下一切皆文件 详谈缓冲区问题 文件常识 1、文件 文件内容 文件属性 2、空文件也要在磁盘上占据空间。因为空文件虽然内容为空&#xff0c;但它的属性也会占据空…

JVM学习笔记十:执行引擎

0. 前言 声明&#xff1a; 感谢尚硅谷宋红康老师的讲授。 感谢广大网友共享的笔记内容。 B站&#xff1a;https://www.bilibili.com/video/BV1PJ411n7xZ 本文的内容基本来源于宋老师的课件&#xff0c;其中有一些其他同学共享的内容&#xff0c;也有一些自己的理解内容。 1. …

设计模式——工厂方法模式(创建型)

创建型模式提供了创建对象的机制&#xff0c;能够提升已有代码的灵活性和可复用性。一、工厂方法工厂方法模式是一种创建型设计模式&#xff0c;其在父类中提供一个创建对象的方法&#xff0c;允许子类决定实例化对象的类型。问题&#xff1a;假设你正在开发一款物流管理应用。…

STA环境

目录1. CMOS逻辑门2. 波形3. 时钟3.1. 指定时钟create_clock时钟延迟set_clock_latency 时钟不确定度set_clock_uncertainty 跨时钟域set_false_path3.2. 衍生时钟3.3. 虚拟时钟4. 时序路径2.1. 输入路径2.2. 输出路径2.3. 点对点约束本文介绍在执行静态时序分析&#xff08;St…

顺序表的基本操作

目录 一.什么是顺序表 二.顺序表的基本操作 1.初始化 2.增容 3.尾插 4.头插 5.尾删 6.头删 7.指定位置插入 8.指定位置删除 9.打印 10.查找 11.销毁 一.什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组…

IBMMQ教程二(window版安装)

下载下载地址&#xff1a;https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/我这里选择的是9.1.0.0版本安装将下载完成的压缩包解压双击Setup.exe直接运行点击软件需求查看系统配置是否满足&#xff0c;右边绿色的对号说明满足需求&#xff0c…

linux 端口查询命令

任何知识都是用进废退&#xff0c;有段时间没摸linux&#xff0c;这大脑里的知识点仿佛全部消失了&#xff0c;就无语。 索性&#xff0c;再写一篇记录&#xff0c;加强一下记忆&#xff0c;下次需要就看自己的资料好了。lsof命令Linux端口查询命令可以通过lsof实现&#xff1a…

教育小程序开发解决方案

如今无论是国家还是家庭对于教育的重视性也越来越高&#xff0c;都希望自己的孩子能够赢在起跑线上&#xff0c;但是因为工作的缘故许多家长并没有过多的精力去辅导孩子学习&#xff0c;再加上许多家长对于教育也并没有经验与技巧。而这些都充分体现了正确教育的重要性。 那么一…

2023金三银四常见Handler面试总结,附带答案

以下的Handler的面试题都是在面试过程中总结出来比较常见的面试题&#xff0c;现在分享给大家&#xff0c;希望可以帮助你们&#xff01;1.Handler的实现原理从四个方面看Handler、Message、MessageQueue 和 Looper Handler:负责消息的发送和处理 Message:消息对象&#xff0c;…

FL Studio21最新中文版下载及切换语言教程

随着近年来摇滚、电音的发展&#xff0c;越来越多的人开始对电子音乐编曲感兴趣&#xff0c;而电音编曲的首要条件&#xff0c;就是需要一个好的DAW&#xff08;数字音频工作站&#xff09;&#xff0c;常用的DAW有很多&#xff0c;例如Cubase、Nuendo、Pro Tools、 SONAR等等&…

Unity - 搬砖日志 - Texture.mipmapBias 无效的解决方法

文章目录环境原因解決方案Referenes环境 Unity : 2020.3.37f1 Pipeline : BRP 原因 因为美术发现有些贴图太糊&#xff0c;但是经过研究发现&#xff0c;mipmap0就是完全够精度的 但是不可能还要提升贴图的尺寸&#xff0c;因为经过多方咨询&#xff08;咨询TA大佬&#xff0…

2023 年会是网络安全的关键年吗?

过去 12 个月对网络安全领域和周围的每个人来说再次充满挑战。和往年不同&#xff0c;感觉很不一样&#xff0c;攻击源源不断。过去&#xff0c;大型漏洞每季度发生一次&#xff0c;但在过去一年中&#xff0c;在某些情况下&#xff0c;我们几乎每周都会处理严重漏洞。 已知利…

itop-3568开发板驱动学习笔记(7)高级字符设备(一)阻塞 IO 和 非阻塞 IO

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录阻塞 IO非阻塞 IOIO 实验&#xff08;使用等待队列&#xff09;等待队列阻塞 IO 实验非阻塞 IO 实验阻塞 IO I/O输入/输出(Input/Output)&#xff0c;分为IO设备和IO接口两个部分。 在POSIX兼容的系统上&…