A1010 Radix (25 分)PAT甲级真题(C++)【进制转换】题目详解 测试点分析

article/2025/8/26 5:19:00

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一个字符串(字符数<=10,在{0~9,a~z}中取)
N2一个字符串(字符数<=10,在{0~9,a~z}中取)
tag1代表radix是N1的进制,2代表radix是N2的进制
radix进制数

假设我们取tag=1,题目就是要我们求出当N2是几进制时,它所表示的数的值与N1在radix进制下表示的数值相等。

基本思路:首先我们将已经知道进制的那个字符串所表示的数转换成10进制,这样进制统一后方便我们将两个字符串进行比较,实现函数为convertTo10。然后通过对进制之间的分析得出未知进制的数的进制范围 [low,high] ,再使用二分查找的方法找到使得两个数相等的那个进制,找不到则输出Impossible。

整体思路还是比较明朗的,具体可以看着代码理解

分析点1:进制的下界(最小值)

这个是就未知进制的这个数本身而言的,它所包含的字符显然每一个都是小于它的进制数的,如果大于等于的话就要进位了,所以它可以接受的最小进制数就是这些字符中最大的那个max再加1,即radix=max+1,也就是我们要找的进制的下界。

分析点2:进制的上界(最大值)

这个是要将两个字符串放在一起看的了,假设N1是已知进制为radix1的,我们要求N2的进制radix2,我们考虑一种情况,radix2=N1,此时如果N2只有一位数,而任何数的0次幂都为1,那么此时N2最大只能是N1-1,不可能满足N1=N2,所以radix2可以继续增大;进一步考虑radix2=N1+1,这时一位数的N1最大可以是N2,即刚好可以满足N1=N2,若是两位数的N2,则倒数第二位最小是1,所以无论最后一位取什么,始终是N2>=N1。

好了,这样一来我们就找到了这个临界点,就是当radix2=N1+1时,刚好可以满足N1=N2,也就是我们要找的N2进制的上界。

注意点!!!可能大家会遗漏,当进制转换后出现的溢出现象,此时值变为了-1,这就是进制数太大了导致的结果,所以要和 t>num 放在一起判断。要记得加上,不然会有测试点通不过~

代码如下:

#include<iostream>
#include<cctype>
#include<cmath>
#include<algorithm>
using namespace std;
long long convertTo10(string n,long long radix)//将进制为radix的数转换为十进制
{long long sum=0;int index=0,temp=0;for(auto it=n.rbegin();it!=n.rend();it++)//rbegin是逆向迭代器,指向最后一个字符{temp=isdigit(*it)?*it-'0':*it-'a'+10;sum+=temp*pow(radix,index++);//系数乘以对应基数的index次幂}return sum;
}
long long find_radix(string n,long long num)//二分查找基数
{char it=*max_element(n.begin(),n.end());//找到一串数中的最大数,此为radix的最小值long long low=(isdigit(it)?it-'0':it-'a'+10)+1;//见分析1long long high=max(num,low);//最大radix若为num,则此时为10(radix进制下),见分析2while(low<=high){long long mid=(low+high)/2;//二分查找提高效率long long t=convertTo10(n,mid);if(t<0||t>num)high=mid-1;else if(t==num)return mid;//返回查找到的radixelse low=mid+1;}return -1;
}
int main()
{string n1,n2;long long tag=0,radix=0,result_radix;cin>>n1>>n2>>tag>>radix;result_radix=tag==1?find_radix(n2,convertTo10(n1,radix)):find_radix(n1,convertTo10(n2,radix));if(result_radix!=-1)cout<<result_radix<<endl;else cout<<"Impossible"<<endl;return 0;
}

运行结果如下:


http://chatgpt.dhexx.cn/article/mRlq7u3L.shtml

相关文章

汇编踩过的坑(error A1010,A2085 ,divide error,A2070,注意事项)

汇编踩过的坑&#xff08;error A1010&#xff0c;A2085 &#xff0c;divide error&#xff0c;A2070&#xff0c;注意事项&#xff09; 最近也是在学汇编语言&#xff0c;上机的时候发现错误很不友好&#xff0c;总是断断续续&#xff0c;上网去查询&#xff0c;又查不到&…

【PAT甲级】A1001-A1050刷题记录

文章目录 A1001 AB Format (20 分) 0.25★(一元多项式加法) A1002 AB for Polynomials (25 分) 0.21(单源最短路Dijkstra边权第二标尺(点权)最短路数目) A1003 Emergency (25 分) 0.28(静态树层次遍历) A1004 Counting Leaves (30 分) 0.35A1005 Spell It Right (20 分) 0.34A1…

绅聚科技推出首款国产化VoIP专用芯片A1010

近20年来我国VoIP产业一直处于蓬勃发展之中&#xff0c;但是最核心的语音融合处理芯片&#xff08;DSP&#xff09;一直是被进口芯片方案所占据&#xff0c;VoIP产品全国产化一直无法实现。2019年6月1日绅聚科技推出了中国首家自主知识产权的中低密度语音融合处理芯片——A1010…

机房收费系统---详细设计说明书

详细设计说明书 1引言 1.1编写目的 说明编写这份详细设计说明书的目的&#xff0c;指出预期的读者。 该文档是在概要设计的基础上&#xff0c;进一步的细化系统结构&#xff0c;展示了软件结构的图表&#xff0c;物理设计&#xff0c;数据结构设计&#xff0c;以及算法设计…

概要设计说明书【校园BBS论坛-附源码】2022-5.5

信息系统分析与设计——系列文章 一、《软件项目开发计划【列文】2022.5.11》 二、《GB&#xff0d;软件需求说明书【列文】2022-5.6》 三、《需求分析文档——适用范围&#xff1a;产品规划经理进行需求分析》 四、《开发进度月报【列文】2022.5.11》 五、《可行性研究报告【列…

数据库课程设计 论坛系统—— 系统详细设计说明书

马马虎虎记录下2021Fall 的数据库课程设计——论坛系统 基于django开发&#xff0c;源码上传到github啦:) &#x1f517; B612Forum 不能翻墙的戳这里:) csdn资源下载 文章目录 1. 文档介绍1.1. 编写目的1.2. 文档范围1.3. 读者对象 2. 数据库概念结构设计2.1 系统 ER 图2.2 系…

【软件工程】机房文档--详细设计说明书

详细设计说明书 1引言 1.1编写目的 现在机房里提供的办公服务不断增加&#xff0c;信息不断的发展&#xff0c;单靠人工管理已经远远不能应付&#xff0c;这就要求办公自动化系统必须实现自动化、集成化。充分利用计算机网络优势&#xff0c;提高办公效率&#xff0c;是机房…

05详细设计说明书

详细设计说明书 1引言 1.1编写目的 本阶段在用户的需求分析的基础上&#xff0c;对机房收费系统做出概要设计。 编制的目的是说明对程序系统的设计考虑&#xff0c;包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计…

网约技师APP详细设计说明书

目录 1引言 3 1.1编写目的 3 1.2背景 3 1.3定义 3 1.4参考资料 4 2程序系统的结构 4 3登录程序Login()设计说明 5 3.1程序描述 5 3.2功能 6 3.3性能 6 3.4输人项 6 3.5输出项 7 3.6算法 7 3.7流程逻辑 7 3.8接口 8 3.9存储分配 8 3.10注释设计 8 3.11限制条件…

【综合实训】图书管理系统——详细设计说明书

【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘铠铭、崔凌浩、卢家伟三位同学共同完成。 文章目录 1 引言1.1 编写目的1.2 项目背景1.3 定义1.4 参考资料 2 总体设计2.1 需求概述2.2 软件结构 3 模块描述3.1 模块基本信息3.2 功能概述3.3 算法3.4 模块处理逻辑…

详细设计说明书(基于C语言的羽毛球场馆预订及查询系统)

详细设计说明书 目录 一.基本情况概述... 3 1.用户名 2. 基本说明 3. 背景 4.编写目的 5.主要参考资料 二&#xff0e;软件详解... 4 1.设计流程图 2.软件主要功能 3.软件各模块 三&#xff0e;测试分析... 5 1.限制条件 2.出现的问题 四&#xff0e;源代码解析.…

计算机基础(一)硬件

校园里当初学习的知识基本消耗殆尽&#xff0c;脑海中只剩浅浅又浅浅的记忆痕迹。即使一直从事相关的工作&#xff0c;但仅仅在一个方向上做着苦行僧&#xff0c;从来无暇去还原看全貌。或许是心有余悸&#xff0c;亦或许是仅仅为了搞钱而没用心正面看过它。在滚滚向前的科技时…

计算机基础硬件知识点讲解

目录 1.CPU2.内存2.1 随机存取存储器2.2 只读存储器 3.高速缓冲存储器3.寄存器6.磁盘7.I/O设备8.运行流程 1.CPU CPU是计算机的大脑&#xff0c;主要和内存进行交互&#xff0c;从内存中提取指令并执行它。在时间多路复用(Time Multiplexing) 的CPU中操作系统往往停止运行一个…

计算机硬件基础知识(三)

1 存储系统 存储系统在计算机系统中的地位非常重要 一般有 Cache和主存组成 Cache 由于在CPU和存储系统间存在数据传送带宽的限制&#xff0c;因此在其中设置了Cache&#xff08;高速缓冲存储器&#xff09; 提高效率&#xff0c;但是由于成本更高&#xff0c;所以cache的容量…

计算机硬件:内存条的基础知识笔记

在电脑硬件中&#xff0c;CPU、显卡、内存均三者是重中之重&#xff0c;所以我们在选择这些核心硬件一定要慎重。今天给大家分享一下关于的电脑内存基础知识&#xff0c;让更多的装机朋友们可以更好的学习内存相关知识。 史上最易懂的电脑内存基础知识 内存条的基本概念&#x…

计算机硬件基本知识

从概念上讲&#xff0c;计算机的结构非常简单&#xff1a;**首先布置一根总线&#xff0c;然后将各种硬件设备挂在总线上。**所有的这些设备都有一个控制设备&#xff0c;外部设备都由这些控制器与CPU通信。而所有设备之间的通信均需通过总线&#xff0c;如图3-1所示。图3-1中的…

计算机硬件系统基础知识

计算机硬件系统 不管我们有没有发现&#xff0c;在生活中我们处处都在使用着计算机。 计算机给我们的生活带来了很多便利与效率&#xff0c;为了更好地使用计算机协助我们的工作学习我们需要对计算机有一个基础的了解。 计算机历史 定义&#xff1a;计算机&#xff08;compu…

硬件基础知识点

目录 ①数制转换②码制转换BCD码有权BCD码无权BCD码 ASCII码循环码&#xff08;格雷码&#xff09;奇偶校验码原码&#xff0c;反码&#xff0c;补码 ③逻辑运算及逻辑门与非或非与或非异或同或(异或非) 逻辑函数逻辑函数的概念由真值表写函数表达式逻辑函数的相等逻辑函数的基…

计算机硬件基础知识总结(一 )

1 进制计算 R进制转换成十进制 将R进制的数的每一位数值用 形式表示 即幂的底数是R 指数位k k是该位数字和小数点之间的距离&#xff08;在小数点左边 为正&#xff0c;右边为负&#xff09; 例如 &#xff1a; 10100.01 的十进制计算方式为 10100.01> 1*…

硬件基础知识

实模式 实模式又称为实地址模式&#xff0c;实&#xff0c;即真实&#xff0c;这意味着程序运行的是真实的指令&#xff0c;对指令的动作不作区分&#xff0c;直接执行指令的真实功能&#xff0c;同时也说明发往内存的地址是真实的&#xff0c;对任何地址不加限制地发往内存。…