进制转换(m 进制 x 转换为 n 进制的数)

简介: 进制转换(m 进制 x 转换为 n 进制的数)

摘要:以前写的进制转换一般不会考虑大数问题,举个例子就是如果16进制的FFFFFFFFF就是16^9是一个非常大的数,这个时候就需要用数组来存。

题目:

将M进制的数X转换为N进制的数输出。

输入

输入的第一行包括两个整数:M和N(2<=M,N<=36)。

下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。

输出

输出X的N进制表示的数。

样例输入

10 2

11

样例输出

1011

提示

注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。

**解题思路:**这个题主要是模拟进制转换的过程写的,运行一遍代码就可以看懂

程序代码:

#include<stdio.h>
#include<math.h>
#include<string.h> 
char s1[1000],c[1000];
int a[1000],b[1000];
int main()
{
  int i,j,k,m,n,x,t,s,sum,v,w;
  scanf("%d%d",&m,&n);
  scanf("%s",s1);
  t=strlen(s1);
  //先转换为十进制
  memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  k=1;
  for(i=0;i<t;i++)
  {
    for(j=0;j<k;j++)
      a[j]=a[j]*m;
    if(s1[i]>='0'&&s1[i]<='9')
      a[0]=a[0]+s1[i]-'0';
    else if(s1[i]>='A'&&s1[i]<='Z')
      a[0]=a[0]+s1[i]-'A'+10;
    v=0;
    for(j=0;j<k;j++)
    {
      a[j]=a[j]+v;
      if(a[j]>=10)
      {
        v=a[j]/10;
        a[j]=a[j]%10;
      }
      else
        v=0;    
    }
    while(v)
    {
      a[k++]=v%10;
      v=v/10;
    }   
  } 
  j=0;
  //把十进制的数顺序掉一下
  for(i=k-1;i>=0;i--)
    b[j++]=a[i];  
/*  for(i=0;i<j;i++)
    printf("%d",b[i]);
  printf("\n");
  printf("%d\n",k);*/
  //*************************************//
  sum=1;s=0;
  //十进制转换n进制
  while(sum)
  {
    sum=0;
    for(i=0;i<k;i++)
    {
      v=b[i]/n;
    //  printf("******%d\n",v);
      sum+=v;
      if(i==k-1)
      {
        t=b[i]%n;
      //  printf("&&&&&&&%d\n",t);
        if(t<=9)
          c[s++]=t+'0';
        else 
          c[s++]=t-10+'a';
      }
      else
      {
        b[i+1]=b[i+1]+b[i]%n*10;
        //printf("+++++%d %d\n",i,b[i+1]);
      } 
      b[i]=v;
    }
  }
  for(i=s-1;i>=0;i--)
    printf("%c",c[i]);
  printf("\n");
  return 0;
} 
相关文章
|
存储 传感器 物联网
Golang 串口通信
Golang 串口通信
|
开发工具 git
成功解决 IDEA 2020 版本 代码报错不提示的几种方案
这篇文章提供了几种解决IntelliJ IDEA 2020版本中代码报错不提示问题的方案,包括通过修改文件夹权限、暂存本地更改后进行git pull,以及在git pull后应用暂存的更改并提交代码到远程仓库的方法。
|
负载均衡 Java
|
Java API Maven
解决SLF4J和logback报错SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
解决SLF4J和logback报错SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
|
存储 分布式计算 大数据
【云计算与大数据技术】分布式计算、虚拟化技术、并行编程技术等技术讲解(超详细必看)
【云计算与大数据技术】分布式计算、虚拟化技术、并行编程技术等技术讲解(超详细必看)
2041 1
|
数据处理 调度 开发者
QML多线程魔法:探索不同方法,提升性能
QML多线程魔法:探索不同方法,提升性能
2060 0
|
前端开发 JavaScript API
JavaScript中多种获取数组最后一个元素的策略。
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
算法 Java
力扣215:数组中的第K个最大元素(Java快速查找、计数排序、堆排序)
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。
1055 0
|
自然语言处理 C++
C/C++ 中的 atol()、atoll() 和 atof() 函数
1.atol(): 此函数将作为参数传递给函数调用的 C 类型字符串转换为长整数。它解析 C 字符串 str 并将其内容解释为整数,该整数作为 long int 类型的值返回。该函数会丢弃字符串开头的空白字符,直到找到非空白字符。如果 C 字符串 str 中的非空白字符序列不是有效的整数,或者如果因为 str 为空或仅包含空白字符而不存在这样的序列,则不执行任何转换并返回零。
781 0