文档章节

百练 2972: 确定进制 之 Java 题解

圣洁之子
 圣洁之子
发布于 2016/07/02 12:04
字数 404
阅读 22
收藏 1

2972:确定进制

描述

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。

输入

一行,包含三个整数p、q、r,相邻两个整数之间用单个空格隔开。 p、q、r的所有位都是数字,并且1 <= p、q、r <= 1,000,000。

输出

一个整数:即使得p * q = r成立的最小的B。如果没有合适的B,则输出 0。

样例输入

6 9 42

样例输出

13

来源

http://bailian.openjudge.cn/practice/2972/

import java.util.Scanner;

public class OpenJudge2972 {
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		// final int n = cin.nextInt();
		// for (int i = 0; i < n; i++) {
		String p = cin.next();
		String q = cin.next();
		String r = cin.next();
		int b = -1;
		for (b = 2; b <= 16; b++) {
			long pAlgorism = b2ten(p, b);
			long qAlgorism = b2ten(q, b);
			long rAlgorism = b2ten(r, b);
			if (pAlgorism == -1 || qAlgorism == -1 || rAlgorism == -1) {
				continue;
			}
			if (pAlgorism * qAlgorism == rAlgorism) {
				System.out.println(b);
				break;
			}

		}
		if (b == 17) {
			System.out.println("0");

		}
		// }
		cin.close();
	}

	static long b2ten(String x, int b) {
		long ret = 0;
		final int len = x.length();
		for (int i = 0; i < len; i++) {
			if (x.charAt(i) - '0' >= b) {
				return -1;
			} else {
				ret *= b;
				ret += x.charAt(i) - '0';
			}
		}
		return ret;
	}
}

 

© 著作权归作者所有

共有 人打赏支持
圣洁之子
粉丝 8
博文 361
码字总数 108478
作品 0
深圳
后端工程师
私信 提问
JVM(Thread/Stack)

JVM Thread/Stack Memory Size JVM Thread/Stack Object states (6 states) JVisualVM

赵-猛
2016/10/12
0
0
Java I/O : Java中的进制详解

作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。 一、引子 在Java世界里,99%的工作都是处理这高层。那么二进制,字节...

泥沙砖瓦浆木匠
2015/06/14
0
0
1024这天,我故意写了个死循环~

导致CPU100%的原因很多,而程序中出现死循环就是原因之一。然而,并不是每个人在工作中都有机会踩中这个坑。我就是其中一个没踩过的。人生似乎有些不完整。 所以,我做了一个很重要的决定:在...

技术小能手
2018/10/24
0
0
深入理解JAVA虚拟机学习笔记——Class类文件的结构(1常量池)

我们先随便创建一个类,代码如下。 运行main方法,这个时候会生成一个class文件,我们用文本编辑器打开它。 由于class文件中是二进制流,直接打开会显示一堆乱码,为了方便查看,我们以16进制...

jamesese
2018/06/07
0
0
Java HexString-字节数组与十六进制字符数组转换

Java HexString-字节数组与十六进制字符数组转换 Java中byte(字节)用二进制表示占用8 bit (位),而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两...

秋风醉了
2015/04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
35分钟前
1
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
2
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
0
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部