PAT甲级 1010. Radix (25分)

简介: PAT甲级 1010. Radix (25分)

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
结尾无空行
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
// 变为10进制数
LL convert(string str, LL radix)
{
    LL len = str.length(), decimal = 0;
    for (LL i = 0; i < len; i++)
    {
        LL n = isdigit(str[i]) ? str[i] - '0' : str[i] - 'a' + 10;
        decimal += n * pow(radix, len - i - 1);
    }
    return decimal;
}
// 二分查找
LL find_radix(string str, LL n1)
{
    char n = *max_element(str.begin(), str.end());
    LL left = isdigit(n) ? n - '0' + 1 : n - 'a' + 11;
    LL right = n1 + 1;
    while (left <= right)
    {
        LL mid = (left + right) / 2;
        LL n2 = convert(str, mid);
        if (n2 < 0 || n2 > n1)
        {
            right = mid - 1;
        }
        else if (n2 == n1)
        {
            return mid;
        }
        else
        {
            left = mid + 1;
        }
    }
    return -1;
}
int main()
{
    string s1, s2;
    LL tag, radix;
    cin >> s1 >> s2 >> tag >> radix;
    if (tag == 2)
    {
        swap(s1, s2);
    }
    LL n1 = convert(s1, radix);
    LL rst = find_radix(s2, n1);
    if (rst != -1)
    {
        printf("%lld", rst);
    }
    else
    {
        printf("Impossible");
    }
    return 0;
}


先把已知进制数转化为十进制,然后未知进制数用不同进制转十进制代入比较,这里使用的是二分查找的方法进行优化。

目录
相关文章
|
安全 Java
Jprofile解析dump文件使用详解(一)
Jprofile解析dump文件使用详解(一)
1234 1
Jprofile解析dump文件使用详解(一)
|
4月前
|
机器学习/深度学习 传感器 数据采集
告别死记硬背,这篇机器学习“黑话”指南让你秒变内行
本 glossary 以工业制造为隐喻,系统梳理机器学习全链路核心概念:从数据预处理(特征工程、归一化、降维等)、主流算法(SVM、CNN、Transformer等),到训练优化(损失函数、反向传播、正则化)、模型评估(混淆矩阵、F1、AUC)及工程部署(MLOps、边缘推理)。共52个术语,兼顾准确性与可理解性,助力快速掌握ML知识体系。(239字)
545 4
|
9月前
|
人工智能 算法 UED
从"AI投毒者"到"信息营养师":GEO运营的价值观革命
与“AI投毒”的短视做法截然不同,真正的GEO运营应当致力于成为AI系统的“信息共建者”。对AI深层知识掌握足够多的朋友都知道,人工智能的三要素:数据、算法和算力。数据是人工智能的一切构建的基础,而训练AI的初期数据多来自互联网,但这些是早起的网络数据,它也会存在着如不完整、不正确和不客观等情况。
|
4月前
|
机器学习/深度学习 人工智能 算法
孪生素数分布的大规模计算实验:分段筛实现与经验统计分析
孪生素数猜想断言存在无穷多对形如 (p,p+2)(p,p+2) 的素数,但该猜想至今仍未解决。Hardy–Littlewood 的第一猜想给出了孪生素数计数函数的经典启发式渐近公式,而张益唐、Maynard 与 Polymath8 的工作则证明了存在无穷多对素数,其间隔有统一上界,但这一上界尚未降至 2 [1–3]。
556 13
|
4月前
|
人工智能 弹性计算 自然语言处理
阿里云学生专属算力包:AI时代下大学生的“数字装备”新选择
阿里云学生专属算力包,19元享高性价比云端AI资源,含练手/毕设/科创三档套餐。配套“AI简历”个人主页,支持视频、交互Demo与GitHub直链,5分钟自然语言一键部署,助力大学生用作品说话,提升就业竞争力。
717 7
|
5月前
|
人工智能 数据可视化 文件存储
MIT开源 首款P2P-AIBridge工具 OoderNexus 发布
Nexus是基于OoderAgent V0.6.5的可视化开发套件,旨在降低P2P AI通信门槛。它提供设备管理(路由器/NAS/智能家居)、SkillFlow编排、场景配置等示例界面,让开发者快速构建SuperAgent分发系统,实现AI能力的直观调用与扩展。(239字)
MIT开源 首款P2P-AIBridge工具  OoderNexus 发布
|
7月前
|
人工智能 安全 算法
GEO讲师王耀恒:当“假榜单”泛滥时,我们正在透支AI时代的信任根基
AI搜索热潮下,80%的GEO从业者正陷入“假榜单”陷阱:批量制造虚假排名,污染信息生态,误导大模型训练。这不仅是算法漏洞,更是“漏洞思维”的泛滥。真正的GEO应是“可信基建”,而非流量骗局。唯有回归真实、客观、专业的价值创造,才能构建持久数字信任。平台也需强化信源核查,守护AI认知净土。
|
11月前
|
Web App开发 Ubuntu 安全
Ubuntu操作系统全解析:桌面、服务器与风格详解
Linux Mint同样源自Ubuntu操作系统,并针对现代用户需求,预装了众多照片和多媒体应用程序。该系统秉承开源社区的理念,为用户提供安全、稳定且易于使用的操作系统。想要深入了解Linux Mint,不妨访问其官方网站。
|
网络协议 安全 物联网
你还在用IPv4?揭秘IPv6的几大神秘优势,这些功能你掌握了吗?未来网络的发展全看它了!
【8月更文挑战第19天】随着IPv4地址资源耗尽,IPv6作为新一代互联网协议标准登场。IPv6提供近乎无限的地址空间(3.4x10^38个地址),简化数据包头部以提高处理效率,引入无状态自动配置机制使设备能快速接入网络,集成IPsec提升安全性,并优化移动性和多宿主支持。这些优势共同推动互联网基础设施升级,迎接未来挑战。
1285 0
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
1309 5

热门文章

最新文章