
数值转换问题(一)相邻数字的基数等比:确定进制
发布日期:2021-05-07 18:29:22
浏览次数:26
分类:技术文章
本文共 1919 字,大约阅读时间需要 6 分钟。
数值转换问题(一)
相邻数字的基数等比:确定进制
*6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的。即, 6(13) * 9(13) = 42(13),而 42(13) = 4 * 131 + 2 * 130 = 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 * 31 + 1 * 30 = 4(10) 和 121(3) = 1 * 32 + 2 31 + 1 * 30 = 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。
代码 #include <stdio.h> #include <string.h> long b2ten( char*x, int b) //x字符数组值,b进制的参数,功能是b进制转换为十进制数 { int ret=0; int len=strlen(x); //得到字符串的长度 for(int i=0;i<len;i++) { if(x[i]-‘0’>=b) //判断是否比b大 return -1; ret = b; ret += x[i] -‘0’; } return (long) ret; } int main(int argc, char argv[]) { int n; char p[8], q[8], r[8]; long pAlgorism, qAlgorism , rAlgorism; int b; scanf("%d",&n); while( n–) { scanf("%s%s%s",p,q,r); for( b = 2; b <= 16; b++) { pAlgorism = b2ten(p,b); qAlgorism = b2ten(q,b); rAlgorism = b2ten(r,b); if( pAlgorism == -1 || qAlgorism == -1 || rAlgorism == -1)continue; if( pAlgorism * qAlgorism == rAlgorism) { printf("%d\n",b); break; } } if( b == 17)printf(“0\n”); } return 0; } 解题思路 (1)选择一个进制b,按照该进制将被乘数、乘数、乘积分别转换成十进制。然后判断等式是否成立。使得等式成立的最小B就是所求的结果。 (2)分别用一个字符型数组存储p、q、r的各位数字符号。先以字符串的方式读入p、q、r,然后按不同的进制将它们转换成十进制数,判断是否相等。 总结 (1)最刚开始可以理解解题思路,但是想了很久也没有看懂代码,所以我通过查词来帮助理解。 ret:子程序的返回指令;从堆栈中退出pc的高8位和低8位字节,把堆栈指针减2,从pc值处开始继续执行程序。不影响任何标志。 堆栈: 一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 strlen: strlen()是函数,是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。 strlen与sizeof: strlen() 函数计算的是字符串的实际长度,遇到第一个’\0’结束。而sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。 len: len函数功能是返回文本串的字符数。Len():得到字符串的长度。语法是Len (string),string类型变量返回值Long。 Algorism: 十进位计数法,在代码中只是命名方便理解。 (2)单个字符转换为数字的方法是int(char[i]-‘0’);发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月18日 22时19分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于MySQL连接时出现的错误之一
2021-05-08
eclipse下Struts2配置文件添加自动提示
2021-05-08
Win10 JDK配置环境变量以及为什么需要配置每部分的原因
2021-05-08
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2021-05-08
SLAM学习笔记-求解视觉SLAM问题
2021-05-08
ROS学习笔记-rosbag数据记录包的使用(1)-记录和回放小海龟历程
2021-05-08
target加载不出文件的原因之一
2021-05-08
顺序表和链表的优缺点
2021-05-08
普歌-允异团队-HashMap面试题
2021-05-08
Vue_cli实现抽奖
2021-05-08
vue_cli轮播图--swiper插件
2021-05-08
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2021-05-08
C语言 希尔排序
2021-05-08
C 语言顺序表查找和折半查找
2021-05-08
Windows下Python安装与使用
2021-05-08
Django-天天生鲜项目
2021-05-08
Font Awesome图标库使用
2021-05-08
Node.js 入门第一讲:下载安装
2021-05-08
程序员应该知道的97件事
2021-05-08
我编程,我快乐—程序员职业规划之道
2021-05-08