相邻数字的基数等比确定进制问题pojg2972
解决数制转换问题时,如果所给的数值不是用十进制表示的,一般用一个字符型数组来存放,数组的每个元素分别存储它的一位数字。然后按位转换求和,得到十进制表示,再把十进制转成成其他所求的进制表示。转成的结果也用一个字符型数组表示。
根据数制表示中相邻位的基数关系,可以把不同的数制分成2类:一类数制表示中相邻位的基数是等比关系,如十进制表示。另一类相邻位的基数是不等比的。如时间表示中。
2927:确定进制:
描述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。
注意审题:2<=b<=16;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
long b2ten(char *x,int b)
{
int ret=; int len=strlen(x);
int base;
for(int i=len-1;i>=0;i--)
{
if(x[i]-'0'>=b) return -1; //还要判断是否超过b,
if(i==len-)
base=;
else base*=b;
ret+=base*(x[i]-'');
//最开始写的是ret+=base*x[i];结果调试时发现输入为6时,ret=54;想了了base是int型,x[i]为char类型,int与char类型相乘
结果是用char型的asci码和int相乘,结果是int型的。于是把要把它转成int的。想到用atoi函数,但是提示错误:
atoi(const char* )与char不匹配,原来atoi是针对字符串的,不能针对字符的,如何把char转成int,减去‘0’就可以了。
}
return (long)ret;
}
int main()
{
int nCases;
scanf("%d",&nCases);
char p[],q[],r[];
long p1,q1,r1;
int b;
for(int i=;i<nCases;i++)
{
scanf("%s%s%s",p,q,r); for(b=;b<=;b++)
{
p1=b2ten(p,b); q1=b2ten(q,b);
r1=b2ten(r,b); if(p1==-||q1==-||r1==-) continue;
if(p1*q1==r1)
{
printf("%d\n",b);
break;
} }
if(b==) printf("0\n"); } }
上面的b2ten非常好理解,是从最低位开始求和的。我们也可以从最高位开始求。例如:
211,我们先求
ret=0*10+2;
在2*10+1=21;
再ret=21*10+1=211;
说明从高位往地位求和也可以。
long b2ten2(char *x,int b)
{
int ret=;
int len=strlen(x);
for(int i=;i<len;i++)
{
if(x[i]-''>=b) return -;
ret*=b;
ret+=x[i]-'0';
}
return (long)ret;
}
这种方式更加好。
相邻数字的基数等比确定进制问题pojg2972的更多相关文章
- 相邻数字的基数不等比:skew数
2973:Skew数 描述在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1). 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) ...
- JavaScript 字符串转数字(整数,浮点数,进制转换)
下面是使用parseFloat()方法的示例: parseFloat("1234blue"); //returns 1234.0 parseFloat("0xA" ...
- 【Qt开发】QString与数字类型的转换(不同进制)
把QString转换为 double类型 方法1.QString str="123.45"; double val=str.toDouble(); //val=123.45 方法2 ...
- js 把数字转成2 ,8,16进制的方法
直接上代码 <!DOCTYPE html> <html> <body> <script> var myNumber = 128; document.wr ...
- PythonStudy——进制 System of numeration
十进制 人类天然选择了十进制. 二进制 二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一. 四进制 四进制是以4为基数的进位制,以 0.1.2 和 3 四个数字表示任何实数. 七进 ...
- JS 进制转换
十进制转换成其他进制 objectname.toString([radix]) objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...
- mysql 10进制与35进制之间的转换 注意Power处理bigint的问题
35进制的目的是防止0和O造成的视觉误差 BEGIN DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果 DECLARE m_Remainder B ...
- java学习之常量与进制
java中的常量包括以下几类: 1.整型常量,比如:3,5,89,99 2.浮点型常量:比如1.23,5.98,3.1415926 3,字符常量:'a','c','1'(需要注意的一点是字符常量只能包 ...
- sql 进制转换,支持93内的进制相互转换
功能:实现在SQL内进制的互相转换,支持从2 - 93进制内的转换,若需要支持其他字符,可以自定义@ym变量实现扩充 -- ====================================== ...
随机推荐
- 「Foundation」字符串
一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1)NSArray:OC不可变数组 NSMutableA ...
- 一幅图的知识科普--Google免费DNS服务器
学习源于问题的解决 前段时间在虚拟机上安装了一个oracle软件,虚拟机和宿主机器的网络连接方式是桥接模式的,手动设置了静态ip地址,网关地址,但是发现虚拟机的浏览器不能用. 于是通过ping测试了一 ...
- CoffeeScript 入门笔记
写在前面: 被英文版指南坑了...闹了很久才明白.coffee怎么用.安装前需要有稳定版 Node.js, 和 npm (Node Package Manager). 借助 npm 可以安装 Coff ...
- 远程读取URL 建议用curl代替file_get_contents
初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了, ...
- jquery 动态增加的html元素,初始化设置在id或class上的事件无效
一般情况,我们会在页面初始化完成后对class定义一些全局事件,举个栗子: $(document).ready(function(){ $(".class").on("m ...
- 「操作系统」: Conditional Move Instructions(trap)
Not all conditional expressions can be compiled using conditional moves. Most significantly, the abs ...
- POJ输出状态的逻辑。
实測POJ应该是採取一个一个点測.哪个点fail了就输出哪个点的状态,但接下来的点貌似还是要測. 測试方法,1000先測出有6个測点1,2,3,4,6.15,然后交了下面代码. #include &l ...
- BitNami Redmine Stack
BitNami Redmine Stack 是打包了 Redmine 的一键安装程序包,包括:Apache, MySQL, Ruby On Rails, and Subversion Redmine ...
- JavaScript 高级程序设计(第3版)笔记——chapter4:变量、作用域和内存问题
Chapter4 变量.作用域和内存问题 l 理解基本类型和引用类型的值 l 理解执行环境 l 理解垃圾收集 4.1基本类型和引用类型的值 l ECMAScript变量包含两种不同数据类型的值 ...
- [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)
题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Descriptio ...