HDU ACM 4278 Faulty Odometer 进制映射

分析:十进制映射到八进制后,如果跳过8到9,实际上只数了7次,如果跳过3到了4-7实际上只数了3-6次。对应关系如下。

0,1,2,3,4,5,6,7,8,9

0,1,2,-,3,4,5,6,-,7

#include<iostream>
using namespace std;

int main()
{
	int a[10]={0,1,2,0,3,4,5,6,0,7},i;
	__int64 ans,k;
	char b[15];

	while(gets(b) && b[0]!='0')
	{
		ans=0;
		k=1;
		for(i=strlen(b)-1;i>=0;i--,k*=8)
			ans+=a[b[i]-'0']*k;
		printf("%s: %I64d\n",b,ans);
	}
    return 0;
}
时间: 2024-10-10 01:24:45

HDU ACM 4278 Faulty Odometer 进制映射的相关文章

HDU 5186 zhx&#39;s submissions (进制转换)

Problem Description As one of the most powerful brushes, zhx submits a lot of code on many oj and most of them got AC. One day, zhx wants to count how many submissions he made on n ojs. He knows that on the ith oj, he made ai submissions. And what yo

HDU 2100 Lovekey 模拟26进制

Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3-An-1 的每一位代表的数字为a0a1a2a3-an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a1 * 26^(n-2) + - + an-3* 26^2 + an-2*26 + an-1 一天vivi忽然玩起了浪漫,要躲在学校

Hdu 4278 Faulty Odometer(8进制转10进制)

Faulty Odometer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1664    Accepted Submission(s): 1146 Problem Description You are given a car odometer which displays the miles traveled as an int

HDU 2100 Lovekey(26进制相加 数学啊)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100 Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3-An-1 的每一位代表的数字为a0a1a2a3-an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a1 * 26^(n-2) +

HDU 4937 Lucky Number(枚举进制)

题目大意:给你一个十进制的数字n,然后问你转化为某一进制后它的每一位的数字只可能为3,4,5,6.求这种符合条件的进制有多少种. 解题思路:这题虽然没说进制有多大但是我们可以简单的分析一下,n的上限是10^12,如果有四位数字的话,那至少要出现三次方,所以进制最大为10000. 所以我们枚举一下,一位的时候3,4,5,6显然为-1. 两位的时候解一下a*x+b = n. 三位时解一下:a*x^2+b*x+c = n. 四位的时候看每一位取余后的结果是否落在3-6之间就行了. Lucky Numb

【POJ 1200】Crazy Search(将字符映射为数字,将NC进制hash成10进制)

题目链接 题目链接 http://poj.org/problem?id=1200 题意 原字符串有NC个不同字母,统计原字符串长度为N的子字符串个数 解题思路 将字符按ASCII码映射成数字. 将n个字符,即n位NC进制拼起来. 将拼起来的n位NC进制转化为10进制. 将10进制映射入hash表,每次映射判断是否已经存在. 若不存在,则ans++:否则将hash设置为存在 如何将子串(n位NC进制)映射为10进制 a = 0 b = 1 c = 2 则 cbaa = 2 * 3^3 + 1 *

HDU4278 Faulty Odometer(进制转化问题)

题目大意:里程表会错过0 1 2 3 4 5 6 7 8 9中的 3 和 8 两个数字 也就是 正常的里程表显示0 1 2 3 4 5 6 7 8 9 坏掉的里程表只会显示 0 1 2 4 5 6 7 9 其实可以看做:0 1 2 3 4 5 6 7  即坏掉的里程表显示的是8进制的数字,只需先将显示的数字换成8进制数,在把8进制数字换位10进制数字就是答案. #include <iostream> #include <map> #include <sstream> #

hdu 2031 进制转换

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2031 题目大意:进制转换,先变成十进制在进行进制间的转化. 1 #include<stdio.h> 2 int main() 3 { 4 int n,m,i,j,f,p; 5 char a[200]; 6 while(scanf("%d%d",&n,&m)!=EOF) 7 { 8 i=0; 9 p=0; 10 if(n<0) 11 { 12 p=-1; 1

【HDU 1887】Weird Numbers(负进制转换)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1887 题意:有两种操作,from-r n代表把一个-r进制下的数字n转换成10进制,to-r n代表把一个10进制下的数字n转化成-r进制. 分析:两种操作中from操作很容易实现,和转换成正进制一样,没什么好说的,而to操作我们首先可以像正常转化一样进行短除法,举个例子: 把15转化为-3进制.短除法并且倒序之后结果为1,-2,0.而我们的进制中是不能出现-2的,所以我们可以这样考虑,-2这位代表的