• CSDN编程挑战——《进制转换》


    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/user_longling/article/details/24804949

    进制转换

    题目详情:

    我们通经常使用的十进制数包括0-9十个数字。如果有一种进制系统包括3种数字,从低到高分别为"oF8”,那么从1到9分别表示为F, 8, Fo, FF, F8, 8o, 8F, 88, Foo, FoF。

    给定一种进制的数和两种进制的数字表。请把它从第一种进制转换为另外一种进制。

    输入格式:

    第一行是T表示測測试数据组数。(0<T<=200)。

    以后T行。每行有3个部分:

    number number_table1 number_table2

    当中number_table1和number_table2表示从第一种进制的数字表和另外一种进制的数字表。

    (数字由低到高。)

    number是第一种进制的一个数。

    数字表可能包括的字符是数字0-9,还有 !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ 等几种字符。

    1<=number<=1000000000 (十进制)。

    输出格式:

    先输出Case #数目,再输出另外一种进制下的数。 详见例子。



    答题说明:

    输入例子

    4

    9 0123456789 oF8

    Foo oF8 0123456789

    13 0123456789abcdef 01

    CODE O!CDE? A?JM!.

    输出例子:

    Case #1: Foo

    Case #2: 9

    Case #3: 10011

    Case #4: JAM!


    C++ 提交:

    #include "stdio.h"
    #include "string.h"
    #define maxn 100
    
    char number[maxn],number_table1[maxn],number_table2[maxn],res[maxn];
    
    void transform()
    {
    	int size1=strlen(number_table1),size2=strlen(number_table2);
    	int value=0,mod=1;
    	
    	//将 number转换为10进制的值value 
    	for(int i=strlen(number)-1;i>-1;i--)
    	{
    		int tmp=strchr(number_table1,number[i])-number_table1;
    		value+=mod*tmp;
    		mod*=size1;
    	}
    	
    	int i=0; 
    	while(value>0)
    	{
    		res[i++]=number_table2[value%size2];
    		value/=size2;
    	}	
    	if(i==0)	res[i++]=number_table2[0];
    	res[i]='';
    	
    	//字符翻转 
    	for(int j=0;j<i/2;j++){
    		char tmp=res[j];
    		res[j]=res[i-j-1];
    		res[i-j-1]=tmp;
    	}	
    }
    
    int main()
    {
    	int T,count=0;
    	scanf("%d",&T);
    	while(count++<T)
    	{
    		scanf("%s%s%s",number,number_table1,number_table2);
    		transform();
    		printf("Case #%d: %s
    ",count,res);
    	}
    	
    	return 0;
    }


    CSDN挑战编程交流群:372863405    

         


  • 相关阅读:
    bzoj1318[spoj 744] Longest Permutation
    bzoj2146 Construct
    bzoj2448 挖油
    bzoj3961[WF2011]Chips Challenge
    bzoj4152[AMPPZ2014] The Captain
    AtCoder Regular Contest 076E Coneected?
    Codeforces 748D Santa Claus and a Palindrome
    bzoj3572[HNOI2014]世界树
    SQL SERVER 字段统一补0方法
    SSRS运行report builder报错 的解决方案
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10679198.html
  • Copyright © 2020-2023  润新知