博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百练2973: Skew binary 数 之 Java 题解
阅读量:5906 次
发布时间:2019-06-19

本文共 1150 字,大约阅读时间需要 3 分钟。

hot3.png

2973:Skew数

描述

在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1) + 0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew数是 0、1、2、10、11、12、20、100、101、以及102。

输入

输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n是一个skew 数

输出

对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 231-1 = 2147483647

样例输入

1012020000000000000000000000000000010100000000000000000000000000000011100111110000011100001011011020000

样例输出

44214748364632147483647471041110737

来源

Mid-Central USA 1997, POJ 1565, 程序设计实习2007

补充阅读:

https://en.wikipedia.org/wiki/Skew_binary_number_system

import java.util.Scanner;public class OpenJudge {	public static void main(String[] args) {		Scanner cin = new Scanner(System.in);		int[] base = new int[31];		base[0] = 1;		for (int i = 1; i < 31; i++) {			base[i] = 2 * base[i - 1] + 1;		}		while (true) {			String skew = cin.next();			if ("0".equals(skew)) {				break;			}			int sum = 0;			int k = skew.length();			for (int i = 0; i < skew.length(); i++) {				k--;				sum += (skew.charAt(i) - '0') * base[k];			}			System.out.println(sum);		}		cin.close();	}}

 

转载于:https://my.oschina.net/u/553266/blog/708824

你可能感兴趣的文章
AssetBundle进阶内存优化(Unity 4.x)
查看>>
《从零开始学Swift》学习笔记(Day 40)——析构函数
查看>>
Exchange2003-2010迁移系列之十,Exchange证书攻略
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
更改UIView的背景
查看>>
APUE第15章学习扎记之程序的存储区布局试验
查看>>
ubuntu升级16.04 inter idea 中文输入法无效
查看>>
三目运算判断jsp脚本里面的值
查看>>
sshtunnel在本地访问云服务器mysql
查看>>
小蚂蚁学习APP接口开发(1)—— json方式封装通信接口
查看>>
我的友情链接
查看>>
CDN相关
查看>>
Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
查看>>
我的友情链接
查看>>
ftp协议基础
查看>>
访问共享经常中断
查看>>
人生的交易
查看>>
MySql
查看>>
sql server 下载安装标记
查看>>
js运算符(运算符的结合性)
查看>>