[PAT甲级]1010. Radix (25)(求另一个数的基数)

别再被坑了!手把手教你从官网下载免费正版Notepad++(附最新网盘链接) 本文详细指导如何从Notepad++官网安全下载正版软件,避免山寨版本带来的安全风险。通过识别官网特征、推荐官方下载渠道、揭露山寨网站骗局及验证正版功能,帮助用户高效获取纯净的Notepad++代码编辑器,并分享实用插件和配置优化技巧。 阅读详情

1010. Radix (25)

原题链接

Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is “yes”, if 6 is a decimal number and 110 is a binary number.

Now for any pair of positive integers N1 and N2, your task is to find the radix of one number while that of the other is given.

Input Specification:

Each input file contains one test case. Each case occupies a line which contains 4 positive integers:
N1 N2 tag radix
Here N1 and N2 each has no more than 10 digits. A digit is less than its radix and is chosen from the set {0-9, a-z} where 0-9 represent the decimal numbers 0-9, and a-z represent the decimal numbers 10-35. The last number “radix” is the radix of N1 if “tag” is 1, or of N2 if “tag” is 2.

Output Specification:

For each test case, print in one line the radix of the other number so that the equation N1 = N2 is true. If the equation is impossible, print “Impossible”. If the solution is not unique, output the smallest possible radix.

Sample Input 1:

6 110 1 10

Sample Output 1:

2

Sample Input 2:

1 ab 1 2

Sample Output 2:

Impossible

题目大意:

  • 给出四个数N1 N2 tag radix,N1和N2是正整数,如果tag==1,N1就是radix进制数,如果tag==2,N1就是radix进制数,求出另一个数的进制

思路:

  • 先将给出进制的数转化为十进制数
  • 再求出另一个数的进制上限和下限
  • 最后用二分法求出另一个数的进制

格外注意:

  • 这道题困扰我好久,说几点注意的
  • 首先是进制的上下限,下限就是另一个数的最大字符+1,上限本应是N1(给出进制的数),但是给出一个反例 11 b 1 10,如果b的上限是11(即N1)的话,结果就错了,所以上限应该是 N1 和 另一个数的最大字符 中较大的一个+1,可能有点儿绕口,请仔细品读
  • 其次题目没有给定N1 N2范围,最好使用long long int
  • 第三也是最重要的一点,未知进制转化为十进制数的时候可能会溢出,如果溢出了,那么该十进制是小于0的,对于小于0的数字,要及时更改进制上限
  • 第四,这个博客说只有一位数时候可能出现多个解,其余情况均只有一个解,那其实不用数组ans存储也是可以的

代码:

#include <iostream>
#include <cstdio>
#include <map>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
map<char, int> Map;//各个字符对应一个数字
string n1,n2;
int tag, radix;
vector<long long> ans;//存储符合要求的进制
long long toTen(string s, long long radix){//将radix进制转化为10进制数
    long long res = 0;
    for(int i=0; i<s.size(); i++){
        res = res*radix + Map[s[i]];
    }
    return res;
}
long long findLow(string s){//找出另一个数的基数下限
    long long res = -1;
    for(int i=0; i<s.size(); i++){
        if(Map[s[i]] > res)
            res = Map[s[i]];
    }
    return res+1;
}
int cmp(string n2, long long radix, long long t){//判断基数是否符合条件
    long long num = toTen(n2, radix);
    if(num < 0)//很重要,注意事项第三点
        return 1;
    if(num < t)//基数偏小
        return -1;
    else if (num > t)//基数偏大
        return 1;
    else
        return 0;//基数符合条件
}
long long binarySearch(string n2, long long left, long long right,long long t){//二分查找寻找符合条件基数
    long long mid;
    while(left <= right){
        mid = (right+left)/2;
        int flag = cmp(n2, mid, t);//判断基数是否符合条件
        if(flag == 0){//将符合要求的进制存入数组中
            ans.push_back(mid);
            right = mid - 1;
        }else if(flag == 1)
            right = mid - 1;
        else
            left = mid + 1;
    }
    if(ans.size() == 0)
        return -1;
    sort(ans.begin(), ans.end());
    return ans[0];//返回符合要求最小进制
}
int main() {
    for(char c='0'; c<='9'; c++)
        Map[c] = c-'0';
    for(char c='a'; c<='z'; c++)
        Map[c] = c-'a'+10;
    cin >> n1 >> n2 >> tag >> radix;
    if(tag == 2){
        string temp = n1;
        n1 = n2;
        n2 = temp;
    }
    long long t = toTen(n1, radix);//将给出基数的数转化为十进制数
    long long low = findLow(n2);//找出另一个数的基数下限
    long long high = low>t ? low+1 : t+1;//找出另一个数的基数上限
    long long res = binarySearch(n2, low, high, t);//二分查找寻找符合条件基数
    if(res == -1)
        printf("Impossible");
    else
        printf("%lld", res);
    return 0;
}
SAP S4 HANA:按单生产(MTO)场景中的COGS分割 本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。 阅读详情

相关推荐

WPF窗口定位技巧:从基础到高级的三种实现方法

本文详细解析WPF窗口定位的三种核心方法:屏幕居中(CenterScreen)、父窗口居中(CenterOwner)和手动定位(Manual)。通过对比其适用场景、实现代码与注意事项,帮助开发者根据实际需求选择最佳方案,从而提升WPF应用程序的用户体验与专业度。

weixin_29224309的博客 273

1010 Radix (25 分)

一、问题描述 输入两个数N1、N2,和一个标记tag、一个基数radix,其意义是:tag为1时,radix是N1的基数;tag为2时,radix是N2的基数。方便起见,以下假定tag为1,则目标就是找到一个尽可能小的基数,使N2在此基数下的值等于N1在radix下的值。例如二进制下的110等于十进制下的6。 二、思路 做过的都知道,思路是不难的,就是坑实在不少,要想的全面一点。 1、暴力算法:...

自己人的博客 6479

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 394

[PAT甲级]1010. Radix 找出让等式成立的进制值

PAT甲级真题1010成功AC,使用Java语言,后续可能c++再来一版

hzykirito的博客 429

转录组PCA分析3大常见误区:数据标准化、离群样本与批次效应处理

本文深入探讨转录组PCA分析中的三大常见误区:数据标准化、离群样本识别与批次效应处理。通过实战案例和R代码演示,揭示如何优化PCA结果以提升生物学解释力,特别关注数据标准化策略的选择和批次校正方法的应用,帮助研究者避免常见陷阱并获得可靠的转录组分析结果。

weixin_28362173的博客 373

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2764

1010 Radix

1010 Radix 注意点 如111 1 1 10类似情况下,若n为个位数,如果本身比另一个数小,则多少的进制都是没有用的(可能会造成空循环而超时),不过好像没有这么一个测试用例 进制应该比最少数据中的最大的数要大一,如8最少是9进制的数,z最少是36进制的数 注意算法中的超时问题如9999999999 11 1 10很容易超时,注意匹配的算法 如果用c等强类型语言写,注意溢出问题,int...

weixin_30614587的博客 203

用4690张图片搞定物流仓储难题:手把手教你训练YOLOv8纸箱检测模型(附完整源码)

本文详细介绍了如何利用YOLOv8目标检测技术解决物流仓储中的纸箱识别难题。通过4690张图片构建高质量数据集,提供完整的训练教程和源码,实现98.7%的mAP@0.5准确率。文章涵盖数据采集、模型训练、调参技巧到边缘计算部署的全流程,帮助读者快速构建智能仓储检测系统。

weixin_28717939的博客 378

pat 甲级 1010 Radix

先说一下整体思路,题目给出四个数据,分别是N1 N2 tag radix,当tag==1时,我们将radix进制下的N1转换成10进制,然后枚举各进制下的N2,再转换成10进制,判断是否与N1相等即可。,其值相当于10机制的x(此时进制数==他的值)。故进制的最大值应该是N1所能表示的最大值;因为N2里面的数字是永远小于他的进制的。故进制的下界就是N2里面的数字的最大值+1。其次就是进制暴力枚举的复杂度是o(n)的,会超时;而考虑到随着进制的增大,N2的数值也是增大的,是单调的,所以可以使用二分。

weixin_50671259的博客 557

【DaVinci Developer工具实战】03 -导入xml文件

本文档描述了 DaVinci Developer 导入数据的的具体功能 ,它适用于导入AUTOSAR SWC 模板【AUTOSAR XML 文件】 文件。

1991

高通蓝牙学习-- 关于Android 蓝牙的介绍

本文详细介绍了AOSP蓝牙架构及高通QCA芯片的蓝牙功能实现方案。主要内容包括:1)AOSP蓝牙架构在不同Android版本中的层次结构,重点分析BTHIDL层和libbt-vendor关键组件;2)QCA芯片的引导流程说明;3)两种获取libbt-vendor源码的方式(Google官方源和国内镜像源);4)针对QCA6595/6696/66x8/67x7芯片的具体实现方案,包括固件文件定义、厂商事件处理和补丁下载流程;5)蓝牙调试方法,包括logcat日志分析、HSU和Ellisys硬件跟踪技术。文章为

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 496

PAT 甲级题目讲解:1010《Radix》

本文深度讲解了 PAT 甲级真题 **1010《Radix》** 的完整解题思路与 C++ 实现。题目核心在于**进制转换函数的设计**与**二分查找优化**。文中详细推导了未知进制的合法范围确定方法、单调性二分策略,以及如何利用 `LLONG_MAX` 防止整数溢出,并总结了常见易错点与复杂度分析,适合准备 PAT/算法竞赛的同学参考学习。

qq_35624947的博客 2185

【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果

游戏和应用开发中,真实感的交互设计能显著提升用户体验。Unity3D图书翻页效果插件为开发者提供了一种便捷方式,可在项目中实现高度拟真的书籍翻页动画。 本文介绍该插件的快速使用方法,涵盖从基础导入到自动翻页效果创建的全过程,让我们快速实现翻页效果。

努力前行,总会成为自己心中的那道光 1万+

PAT甲级 1010 Radix

PAT甲级 1010 Radix Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now for any pair ...

旺崽的博客 2852

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

PAT练习题(甲级) 1010 Radix (25分)(Java实现)

PAT练习题 1010 Radix(25分)题干题意陷阱解题思路代码三目表达式转化十进制模板本题代码 题干 Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now for any pair of positive integer

CoderHqf的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【PAT甲级】1010 Radix (25 分)

1010 Radix 题目描述 Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now for any pair o...

初见还是重逢的博客 1137

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

菜鸟记录:c语言实现PAT甲级1010--Radix

很长时间没做,忙于考研和实习,久违的的拾起了算法。做了很长时间,其实总体思路还是很简单的,但满分不知道为什么就是到不了,又因为网上很多答案包括柳神的都是c++,无法参透,姑且只能这样了。yes。

qq_64790058的博客 1333

PAT甲级题目索引(题目+解析+AC代码)

emmmm,1001~1033的题解是英文的,后面的解析就都是中文的了,(当时想借此锻炼自己的英文水平但是最后发现效果不是太好而且浪费时间遂换回中文,就在这里说一下~) 题目信息 分值 PAT 甲级 1001 A+B Format 20 PAT 甲级 1002 A+B for Polynomials 25 PAT 甲级 1003 Emergency ...

漫浸天空的雨色的备忘录~ 2万+

PAT甲级-1010radix⭐⭐⭐⭐⭐

PAT甲级-1010radix⭐⭐⭐⭐⭐ 1、原题参照PAT官网 给出一对positive整数例如6和110,可以让这个等式6=110为真吗?结果是yes,如果6是一个浮点小数并且110是一个binary数。 现在对于任意一对positive整数N1和N2,你的任务是去找到一个数字的redix 每一个输入文件含有一个测试用例,一行里有四个整数:N1 N2 tag radix 2、生词 Radix...

qq_41819953的博客 284

PAT甲级 - 1010 Radix (25 分)

题目链接:PAT甲级 - 1010 Radix (25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. N...

174

1010 Radix (25分) PAT甲级 Java 实现

1010 Radix (25分) PAT甲级 Java 实现 文章目录1010 Radix (25分) PAT甲级 Java 实现1 题目2 解题思路2.1 题目大意2.2 题目细节2.3 解题思路3 代码 1 题目 题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536 Given a pair of positive integers, for example, 6 and 110, can

qq_38650754的博客 278

PAT 甲级 1010  Radix

1010Radix(25 point(s)) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer isyes, if 6 is a decimal number and 110 is a binary number. Now for...

漫浸天空的雨色的备忘录~ 979

PAT 甲级1010 Radix (25 分)

1010Radix(25分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer isyes, if 6 is a decimal number and 110 is a binary number. Now for any pa...

Dexter 279

PAT真题练习(甲级)1010 Radix (25 分)

PAT真题练习(甲级)1010 Radix (25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number. Now f...

Be Quick & Clever & Lucky 345

PAT 甲级 1010 Radix

【PAT甲级】 1010 Radix

m0_61974219的博客 244

PAT甲级1010 Radix (25分)

PAT甲级1010 Radix (25分) 题目: 题目分析:运用二分法来处理 AC代码附上: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; ll map[256];//0~9,a~z,和0~35对应 ll ...

weixin_43795683的博客 344
上一篇: [PAT甲级]1009. Product of Polynomials (25)(求多项式的积)
下一篇: [PAT甲级]1011. World Cup Betting (20)(世界杯投注)
whl_program
博客等级 码龄11年 101粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值