尴尬的数字(C++,数学)
admin
2024-05-13 22:42:39
0

题目背景

Bessie 刚刚学会了不同进制数之间的转换,但是她总是犯错误,因为她的两个前蹄不能轻松的握住钢笔。

题目描述

每当 Bessie 将一个数转换成新的进制时,她总会写错一位数字。例如,她将 14 转化成 2 进制数,正确的结果是 1110,但她可能会写成 0110 或 1111。Bessie 从不会意外的增加或删减数字,所以她可能会写出以 0 开头的错误数字。

给出 Bessie 转换后 NNN 的 2 进制形式和 3 进制形式,请计算出 NNN 的正确数值(用十进制表示)。NNN 可能会达到 10910^9109,输入数据保证解的存在唯一性。

输入格式

第一行,NNN 的 2 进制表示(有一位是错误的数字)。

第二行,NNN 的 3 进制表示(有一位是错误的数字)。

输出格式

NNN 的正确值。

样例 #1

样例输入 #1

1010
212

样例输出 #1

14

解题思路:

最容易想到的就是暴力枚举,将二进制的每一种可能错误与三进制的每一种可能错误比较,相同则为答案

这里不对这种方法进行说明,采用另一种方法

利用异或^的性质,枚举每一种二进制的可能错误

考虑到在三进制只错一位的前提下,如果得出的N是正确值

那么将abs(正确数 - 三进制错误数)写成i∗3ji * 3^ji∗3j的形式,一定可以得到i<3i < 3i<3

从而得出时间复杂度接近o(n)的算法

AC代码如下

#include 
#include 
using namespace std;long long binTodec(string str) {//二进制转十进制int len = int(str.size());int power = 1;long long sum = 0;for (int i = len - 1; i >= 0; i--) {sum += power * (str[i] - '0');power *= 2;}return sum;
}long long threeTodec(string str) {//三进制转十进制int len = int(str.size());int power = 1;long long sum = 0;for (int i = len - 1; i >= 0; i--) {sum += power * (str[i] - '0');power *= 3;}return sum;
}int main() {string str_1, str_2;cin >> str_1 >> str_2;long long t_1 = binTodec(str_1);long long t_2 = threeTodec(str_2);int power = pow(2, int(str_1.size()) - 1);for (int i = 0; i < int(str_1.size()); i++, power /= 2) {//枚举二进制错误long long t_3, t_4;if ((str_1[i] - '0') ^ 1)//异或操作t_3 = abs((t_4 = t_1 + power) - t_2);elset_3 = abs((t_4 = t_1 - power) - t_2);while (t_3 % 3 == 0) t_3 /= 3;//检测是否正确if (t_3 < 3) {cout << t_4 << endl;break;}}return 0;
}

这里简单说明一下,为什么不可能有第二个N使得判定条件成立

众所周知,暴力枚举一定可以得出正确答案

如果有第二个N可以使得差值写成i∗3ji * 3^ji∗3j,那么对于暴力枚举,这个N同样也是正确的

因为暴力枚举可以把三进制的j+1j+1j+1位修改,使得二进制修改后的值与之相等

相关内容

热门资讯

和讯投顾王宇:还剩三天,题材能... 2月10日,和讯投顾王宇表示,当下市场题材分歧愈发明显,节前仅剩三个交易日,到底还能不能继续博弈?极...
美股三大指数集体高开 新闻荐读 美东时间周二,美股三大指数集体高开,截至北京时间23:00左右,道指涨逾360点,续创盘中...
华润置地,任命新的集团营销负责... 近日,市场消息,华润置地原杭州公司分管副总朱勇,被任命为集团运营管理部副总经理,分管整个开发销售型业...
原创 比... 当地时间2月9日,路透社的一则报道引发广泛关注:中国汽车制造商比亚迪已正式对美国政府提起诉讼,剑指美...
裕同科技拟4.49亿元收购华研... 苹果、泡泡玛特主要供应商裕同科技(002831)2月10日晚间公告,拟4.49亿元收购东莞市华研新材...
巨亏50亿!AI制药独角兽IP... 2月4日,AI+可编程药物公司Generate:Biomedicines向美国证券交易委员会(SEC...
多家知名品牌宣布:春节期间,涨... 过年脚步临近,春节假期是线上消费的高峰期,也是运力最为紧张的时期。顺丰、京东物流、圆通、申通、中通、...
担忧受AI冲击 美国微软公司股... (央视财经《天下财经》)据彭博社等媒体9日报道,当天,美国梅利乌斯研究公司将微软公司的股票评级从“买...
原创 2... 写在文章前的声明:在本文之前的说明:本文中所列的投资信息,只是一个对基金资产净值进行排行的客观描述,...
青藏高原发现天然氢:可以拉开能... 近日,中国科学家在青藏高原的岩石里,第一次实实在在地“看到”了天然氢气。 它不是通过计算或地表泄漏推...
上海小南国回应餐厅停止营运 北京商报讯(记者 郭缤璐)2月10日晚间,上海小南国控股有限公司发布公告,对于上海小南国品牌在上海经...
招金矿业致歉:向遇难者表示沉痛... 2月10日,招金矿业在港交所发布公告: 最近,招金矿业股份有限公司蚕庄金矿(“蚕庄金矿”)上庄矿段...
君乐宝上市布局细分赛道领跑增长... 2026年1月19日,中国领先的综合乳制品企业君乐宝乳业集团股份有限公司(简称“君乐宝”)正式向香港...
酒业渠道商再闯港股,名品世家董... 蓝鲸新闻2月10日讯(记者 朱欣悦)2月10日,港股GEM上市公司环球印馆控股有限公司(08448....
上市银行,迎密集调研! 2026年以来,上市银行迎来机构密集调研,其中沿海经济发达区域的中小银行是机构重点调研对象。 截至2...
豆包压哨参战,决战春节流量窗口... 本报(chinatimes.net.cn)记者卢晓 北京报道 春节AI红包大战继续升温。 2月10日...
小米汽车准备进入美国市场?雷军... 2月10日,针对小米YU7被拍到行驶在美国加州的高速公路上,挂着当地的测试车牌或进入美国市场的消息,...
春节后部分黄金产品将调价?周大... 2月10日,有消息称,黄金珠宝品牌周大福在春节后将对黄金产品调价,此次调价或于3月中旬启动,目前部分...
标普500指数高开9.67点,... 标普500指数高开9.67点,涨幅0.14%,报6974.49点; 道琼斯工业平均指数高开57.6...
中国银行调整春节期间代理个人上... 中国银行2月10日发布关于2026年春节期间代理个人上金所业务相关调整的公告称,2026年春节假期临...