进制转化(北理乐学编程题目)
我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。
这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。
程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。
求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 |
以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 2 |
以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 3 |
以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 4 |
以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
分析:因为可能用到A~Z,所以用字符数组来保存输入的数据。 题目的要求是你输入的两个数据在某种进制下可以相等, 再结合用例我们可以想到公式:在某一个进制下,一个数据应为 各个位的数字 × (进制数的位数-1)次方 【sum = a[j] * pow (base,j-1)】,此外每一个数,他合法的最小进制转化应该是各个位最小的数再加1 例如10 最小进制转化为2 A最小进制转化为 11;
这里函数的指针完全可以转化为数组,只是为了好看~
#include <stdio.h>
#include <math.h>
#include <string.h>char a[50], b[50];
int c[50], d[50];
int main() {scanf("%s %s", a, b);void basechange(char *a, int);int startbase(char *x);basechange(a, 1);basechange(b, 2);/* for (int i = startbase(a); i <= 36; i++) //调试用printf("%d\n", c[i]);printf("\n");for (int i = startbase(b); i <= 36; i++)printf("%d\n", d[i]);*/for (int i = startbase(a); i <= 36; i++) {for (int j = startbase(b); j <= 36; j++) {if (c[i] == d[j]) {printf("%s (base %d) = %s (base %d)\n", a, i, b, j);return 0; //在这返回0 如果没有结束就意味着不存在}}}printf("%s is not equal to %s in any base 2..36\n", a, b);
}void basechange(char *f, int x) { //函数一:将一个数所有合法进制转化并存下来int sum = 0; //这里由于要对两个数据转化,因此抽象了一个参数x表示哪一个数int startbase(char *x);for (int i = startbase(f); i <= 36; i++) {sum = 0;for (int j = 0; j <= strlen(f) - 1; j++) {char t = f[j];if (t > 60) {t -= 7;}t -= 48;sum += t * pow(i, strlen(f) - 1 - j);}if (x == 1) //对应参数xc[i] = sum;if (x == 2)d[i] = sum;}}int startbase(char *x) { //函数2 找最小合法进制转化数int max = *x;for (int i = 0; i <= strlen(x) - 1; i++) {if (max < * (x + i)) {max = *(x + i);}}if (max > 60)max -= 7;max -= '0';max += 1;return max;
}
main函数中只分了三小部分:输入数据,利用函数进行转化,判断是否有解。
if (x>60) x-=7; x-=48或x-='0' 可以将数字和字母都转化为int 类数字(0~9 ASCII码为48~57,A为65,A对应10,理论上应该是58,所以额外减去7)
进制转化(北理乐学编程题目)相关推荐
- python数据结构:进制转化探索
*********************************第一部分*************************************************************** ...
- 【PAT - 甲级1010】Radix (25分)(二分,进制转化)
题干: Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? Th ...
- 北理乐学c语言基础答案晕,北理乐学C语言答案.doc
北理乐学C语言答案.doc 7.入门 计算圆柱的侧面积及体积 include void main double a,b; scanf"lfnlf", printf"s.2 ...
- 将最大位1000位的16进制转化位8进制(蓝桥杯)
用c++实现将最大位1000位的16进制转化成8进制(## 蓝桥杯) 题目 先将16进制转化成二进制在将其转化成八进制 代码如下(示例): ```cpp #include <bits/stdc+ ...
- 10进制与26进制转化
蓝桥杯--进制转换--10进制与26进制转换中的问题 一.问题描述 1.字母编号序列LANQIAO表示的数为多少? 2.2021用字母怎么表示? 二.问题分析 2.1规律解析 2.2 十进制<- ...
- 计算机组成原理——基本组成 进制转化 奇偶校验 原码 反码 补码 移码 移位 原码补码乘法除法 IEEE754 加法器ALU
笔记来源于王道考研视频 第一章 通过电信号传递信息(低电平代表0,高电平代表1) 计算机系统 计算机系统=硬件+软件 软件 系统软件 应用软件 操作系统,数据库管理系统(DBMS),标准程序库(编程时 ...
- 编码/解码和进制转化工具hURL
编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Linu ...
- ASP常用进制转化类(2,8,10,16,32,64)
<% ' 名称:HDOBTools ' 描述:进制转化类 ' 作用:用于各种进转的转化 Class HDOBToolsPrivate hdobHackPrivate Sub Class_Init ...
- 进制转化进10进制数
Option Explicit Private Sub Form_Click() Dim St As Integer, Dem As Long St=InputBox("输入一个十六进制数& ...
- 【风马一族_C】进制转化
1 #include "stdio.h" 2 #include "Math.h" 3 #define number 50 //设置数组的长度 4 5 int n ...
最新文章
- 如何解决企业邮件对国外的通信问题
- CentOS6.5-源码编译安装最新MySQL5.7.10
- 透彻理解Spring事务设计思想之手写实现
- 4月份不良与垃圾信息举报:垃圾邮件占37.4%
- 资源 | 普通程序员如何自学机器学习
- ModelArts 与HiLens Kit联合开发丨行人社交距离风险提示Demo
- APP时间界面设计模板,可临摹学习的好素材
- rpm安装mysql5.6.37_MySQL之—RPM方式安装MySQL5.6 代码实例详解
- Thumbnailator java图片压缩,加水印,批量生成缩略图
- NVIDIA-cuda-cudnn下载地址
- Android之线性布局的4个重要参数
- redhat linux ssh服务,Redhat6开启ssh
- “九章”量子计算机与智能优化算法
- 【谷歌浏览器】国内如何配置谷歌浏览器使用
- 微信输入几个字,就能查看好友朋友圈所有动态!你不会不知道吧
- 计算机win10搜不到wifi,Windows10笔记本找不到无线网络如何处理
- java随机答题器_Advanced Random Auto Clicker免费版下载-多合一随机自动答题器 v4.21 免费版 - 安下载...
- FineBI中tomcat服务器部署
- 经典!智能车牌识别称重系统解决方案
- 计算机编程课程顺序_您可以在2月开始免费在线编程和计算机科学课程
热门文章
- 树莓派之Debian游戏(部分)
- android手机客户端,【图片】安卓[android]手机客户端版发布【联盟守卫吧】_百度贴吧...
- Geohot使用绿雨的BETA4越狱iPhone4 4.1固件详细教程
- 如何读取H264文件获得每一帧的数据(VsParserPro)
- 网页前端培训笔记(JavaScript事件)
- 数据库服务器位置,怎么查看服务器数据库的位置
- Android 系统签名实现的三种方式
- linux 脚本加密工具下载,linux truecrypt 加密工具
- 计算机的病毒防治教案,小学信息技术《防治计算机病毒-计算机病毒》教案
- python 比对两个excel表数据_python 如何快速找出两个电子表中数据的差异