[进制转换] 确定进制

确定进制

题目描述

6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的。因为, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 13 + 2 = 54(10)
你的任务是写一段程序读入三个整数p, q和 r,然后确定一个进制 B (2<=B<=16) 使得 p * q = r. 如果 B有很多选择, 输出最小的一个。例如: p = 11, q = 11, r = 121. 则有 11(3) * 11(3) = 121(3) 因为 11(3) = 1 * 3 + 1 = 4(10) 和 121(3) = 1 * 3^2 + 2 * 3 + 1 = 16(10)。 对于进制 10,有 11(10) * 11(10) = 121(10)。这种情况下,应该输出 3。如果没有合适的进制,则输出 0。

关于输入

输入有 T组测试样例。 T在第一行给出。每一组测试样例占一行,包含三个整数p, q, r。 p, q, r 的所有位都是数字,并且1<=p,q, r<=1,000,000

关于输出

对于每个测试样例输出一行。该行包含一个整数,即使得p * q = r成立的最小的B。如果没有合适的B,则输出 0。

例子输入

3
6 9 42
11 11 121
2 2 2
例子输出

13
3
0
解题分析

这个程序的主要目的是找到一个进制 B B B 2 ≤ B ≤ 16 2 \leq B \leq 16 2B16),使得给定的三个数字 p p p, q q q r r r 满足 p ∗ q = r p * q = r pq=r。如果存在多个这样的进制,程序会输出最小的一个;如果不存在,程序会输出 0。

程序的主要步骤如下:

  1. 读取输入:程序首先读取测试样例的数量 T T T,然后对于每个测试样例,读取三个数字 p p p, q q q r r r。这三个数字都是字符串形式的十进制数。

  2. 遍历所有可能的进制:然后,程序遍历所有可能的进制 B B B(从 2 到 16)。对于每个进制,程序会尝试将 p p p, q q q r r r 转换为这个进制的数。

  3. 转换数字:转换是通过 convert 函数实现的。这个函数接受一个字符串和一个进制,然后将字符串转换为这个进制的数。如果字符串中的任何一位数字大于等于进制,那么转换失败,函数返回 -1。否则,函数会计算出这个进制的数。

  4. 检查等式是否成立:如果 p p p, q q q r r r 都成功转换为了这个进制的数,那么程序会检查等式 p ∗ q = r p * q = r pq=r 是否成立。这里需要注意的是,由于 p p p q q q 的乘积可能超过整数的范围,所以需要使用 long long 类型来存储乘积。

  5. 输出结果:如果找到了一个合适的进制,程序会输出这个进制,并将 found 设置为 1,然后跳出循环。如果遍历完所有的进制都没有找到合适的进制,那么 found 仍然是 0,程序会输出 0。

这个程序的时间复杂度是 O ( T ) O(T) O(T),其中 T T T 是测试样例的数量。这是因为对于每个测试样例,程序需要遍历 15 个进制,并且每个进制的处理时间是常数。

代码实现

#include <stdio.h>
#include <string.h>

int convert(char *s, int base) {
    int res = 0;
    for (int i = 0; s[i]; i++) {
        int digit = s[i] - '0';
        if (digit >= base) return -1;
        res = res * base + digit;
    }
    return res;
}

int main() {
    int T;
    scanf("%d", &T);

    while (T--) {
        char p[10], q[10], r[10];
        scanf("%s %s %s", p, q, r);

        int found = 0;
        for (int base = 2; base <= 16; base++) {
            int vp = convert(p, base);
            int vq = convert(q, base);
            int vr = convert(r, base);

            if (vp == -1 || vq == -1 || vr == -1) continue;
            if ((long long)vp * vq == vr) {
                printf("%d\n", base);
                found = 1;
                break;
            }
        }

        if (!found) printf("0\n");
    }

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue的Nuxt项目部署在服务器,pm2动态部署和npm run build静态部署

Nuxt项目的部署有两种方式&#xff0c;一种是静态部署&#xff0c;一种是动态部署 静态部署需要关闭项目的ssr功能&#xff0c;动态部署则不需关闭&#xff0c;所以怎么部署项目就看你用不用ssr功能了 。 1.静态部署 先说静态部署&#xff0c;很简单&#xff0c;只需要在nuxt…

无限移动的风景 css3 动画

<style>*{margin:0;padding:0;/* box-sizing: border-box; */}ul{list-style: none;}#nav{width:900px;height:100px;border:2px solid rgb(70, 69, 69);margin:100px auto; overflow: hidden;}#nav ul{animation:moving 5s linear infinite;width:200%; /*怎么模拟动画…

量化误差的测量

因为转换的精度有限&#xff0c;所以将模拟值数字化时会不可避免地出现量化误差。量化误差由转换器及其误差、噪声和非线性度决定。当输入信号和计数器时基有区别时就会产生量化误差。根据输入信号的相位和计数器时基的匹配程度&#xff0c;计数器有下列三种可能性&#xff1a;…

嵌入式硬件电路设计

一、嵌入式硬件电路设计概述 随着物联网、人工智能技术的发展&#xff0c;我们的生活越来越智能化&#xff0c;信息化。智能手机&#xff0c;智能手环&#xff0c;智能锁&#xff0c;智能冰箱&#xff0c;自动驾驶&#xff0c;机器人等智能产品层出不穷&#xff0c;人类即将进入…

PSP - 解决 ESMFold 推理长序列蛋白质结构的显存溢出问题

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134709211 使用 ESMFold 推理长序列 (Seq. Len. > 1500) 时&#xff0c;导致显存不足&#xff0c;需要设置 chunk_size 参数&#xff0c;实现长…

Vue大屏自适应终极解决方案

v-scale-screenv-scale-screen是一个大屏自适应组件&#xff0c;在实际业务中&#xff0c;我们常用图表来做数据统计&#xff0c;数据展示&#xff0c;数据可视化等比较直观的方式来达到一目了然的数据查看&#xff0c;但在大屏开发过程中&#xff0c;常会因为适配不同屏幕而感…

前端三大MV*模式:MVC、mvvm、mvp模式介绍

MVC&#xff08;同步通信为主&#xff09;&#xff1a;Model、View、Controller MVP(异步通信为主)&#xff1a;Model、View、Presenter MVVM(异步通信为主)&#xff1a;Model、View、ViewModel mvc模式介绍 MVC&#xff08;Model–View–Controller&#xff09;模式是软件…

C语言——编写程序,判断从键盘输入字符的类型(大写字母、小写字母、数字、其他四类)

#define _CRT_SECURE_NO_WARNINGS 1#include <ctype.h> #include <stdio.h> int main() { char c;printf("请输入一个字符: \n");scanf("%c",&c);if (isupper(c)) {printf("这是一个大写字母\n");} else if (islower(c)) {pr…

解决tomcat 启动 , 中文乱码问题

解决tomcat 启动 , 中文乱码问题. 第一步找到server.xml, 找到连接器, 添加 URIEncoding"UTF-8" 注意是英文的引号. 第二步, 找到 logging.properties , 在其中找到 第三步,启动服务, 观察现象,亲测有效.

社区内涝积水监测系统作用,改善社区积水

随着社区化进程的加速&#xff0c;社区基础设施的重要性日益凸显。在这个背景下&#xff0c;社区生命线和内涝积水监测系统成为了关注的焦点。它们在维护社区安全&#xff0c;特别是在应对暴雨等极端天气条件下&#xff0c;发挥着至关重要的作用。 WITBEE万宾时刻关注社区内涝积…

Cookie要怎么测试?

前言 Cookie是一种用于在web应用程序中存储用户特定信息的方法&#xff0c;可以让网站服务器把少量数据存储到客户端的硬盘或内存&#xff0c;或是从客户端的硬盘读取数据。Cookie的测试是指对Cookie的功能、性能、安全性、兼容性等方面进行验证的过程。 同时&#xff0c;在这…

arthas使用

官方文档 Github: https://github.com/alibaba/arthas 文档: https://arthas.aliyun.com/doc/ Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断…

民安智库(第三方市场调查公司):专业调研引领某月饼生产商企业发展

在中国的传统佳节中&#xff0c;月饼是一种重要的节日食品&#xff0c;也是送礼的首选。某月饼生产商一直以来以其高品质、独特口味的月饼而备受消费者喜爱。为了更好地了解消费者对产品的满意度&#xff0c;该月饼生产商决定委托民安智库&#xff08;湖北知名满意度测评公司&a…

eBay需要添加什么卡可以付费?

前言 最近很多朋友不管是做eBay易贝卖家还是在eBay海淘下单购物的都或多或少遇到无法用卡付费的问题&#xff0c;甚至很多朋友之前明明可以用卡去付费&#xff0c;第一次可以第二次却不行了&#xff0c;想不到吧&#xff1f;这eBay平台还有这种骚操作&#xff0c;那到底用什么…

Spring-Mybatis源码解析--手写代码实现Spring整合Mybatis

文章目录 前言一、引入&#xff1a;二、准备工作&#xff1a;2.1 引入依赖2.2 数据源的文件&#xff1a;2.1 数据源&#xff1a; 2.3 业务文件&#xff1a; 三、整合的实现&#xff1a;3.1 xxxMapper 接口的扫描&#xff1a;3.2 xxxMapper 接口代理对象的生成&#xff1a;3.2 S…

vr智慧党建展厅超强参与感增强党员群众认同感、归属感

党建教育与VR虚拟现实技术的结合&#xff0c;是顺应现代信息化发展趋势的要求&#xff0c;不仅打破了传统党建教育的束缚&#xff0c;还丰富了党建宣传教育的渠道&#xff0c;党建教育VR云课堂平台是基于深圳华锐视点自主研发的VR云课堂平台中去体验各种VR党建教育软件或者视频…

水利遥测终端机RTU的重要作用

水利遥测终端机RTU是一种在水利行业中广泛应用的设备&#xff0c;它利用先进的传感技术和远程通信技术&#xff0c;实时监测和采集水利系统的各项指标数据。它的出现不仅提高了水利行业的运行效率&#xff0c;同时也使水利管理更加科学和精细化。 ■水利遥测终端机RTU具备高精度…

如何有效的进行 E2E

一、前言 本文作者介绍了什么是E2E测试以及E2E测试测什么&#xff0c;并从对于被测系统、测试用例、测试自动化工具、测试者四个方面的要求&#xff0c;介绍了如何保证E2E测试有效性&#xff0c;干货满满&#xff0c;值得学习。 二、什么是E2E测试 相信每一个对自动化测试感…

记录一次前后端传参方式不一致异常

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 报错以及Bug ✨特色专栏&#xff1a; …

同城按摩理疗APP小程序开发制作流程;

同城按摩理疗APP小程序开发制作流程&#xff1b; 开发同城按摩理疗APP小程序&#xff0c;首先需要进行市场调研&#xff0c;深入了解用户需求&#xff0c;明确小程序的定位和服务对象。接着&#xff0c;根据需求分析结果&#xff0c;制定详细的设计方案和开发计划。然后&#…