zoukankan      html  css  js  c++  java
  • 62进制(非大数除法实现)

     1 #include<iostream>
     2  #include<cstdio>
     3  #include<cstring>
     4  #define N 1005
     5  using namespace std;
     6  
     7   int StrToNum(char t)//字符--->>数字
     8  {
     9     if(t>='0'&&t<='9')return t-'0';//数字
    10     if(t>='A'&&t<='Z')return t-'A'+10;//大写字母
    11     else return t-'a'+36;//小写字母
    12  }
    13  
    14  char NumToStr(int t)//数字-->>>字符
    15  {
    16   if(t>=0&&t<=9)return (t+'0');
    17   if(t>=10&&t<=35)return (t-10+'A');
    18   else return (t-36+'a');
    19  }
    20  
    21  void conversion(int old_base,int new_base,char t[],int len)
    22  {
    23       int div[N];//被除数
    24       int ans[N];//
    25       int res[N];//余数
    26       int i,j,temp_len=len,temp,k=0,m;
    27       memset(div,0,sizeof(div));
    28       memset(ans,0,sizeof(ans));
    29       memset(res,0,sizeof(res));
    30      for(i=0;i<len;i++)
    31          div[i]=StrToNum(t[i]);
    32      while(temp_len>=1)//只要被除数不等于(长度>=1),就继续
    33      {
    34           temp=0;//余数
    35           j=0;
    36           while(j<temp_len)   
    37             {         
    38                temp=temp*old_base+div[j];        
    39                 ans[j]=temp/new_base;  
    40                 temp%=new_base; 
    41                 j++;
    42             } 
    43            res[k++]=temp; 
    44            j=0;
    45      while(j<temp_len&&ans[j]==0) j++; //去除前导零  
    46      memset(div,0,sizeof(div));  
    47       for(i=j,m=0;i<temp_len;i++)  //商变成新的被除数       
    48           div[m++]=ans[i];  
    49           temp_len=m;
    50      memset(ans,0,sizeof(ans));//清空商
    51      }
    52      for(i=k-1;i>=0;i--)
    53          cout<<NumToStr(res[i]);
    54      cout<<endl;
    55  }
    56  int main()
    57  {
    58    int i,test,base_a,base_b,len;
    59    char temp[N];
    60    cin>>test;
    61    while(test--)
    62    {
    63      memset(temp,0,sizeof(temp));
    64      scanf("%d%d%s",&base_a,&base_b,temp);
    65      len=strlen(temp);
    66      cout<<base_a<<" ";
    67      for(i=0;i<len;i++)
    68      cout<<temp[i];
    69      cout<<endl;
    70      cout<<base_b<<" ";
    71      conversion(base_a,base_b,temp,len);
    72    }
    73  return 0;
    74  }
  • 相关阅读:
    山东省第一届acm程序设计竞赛题解
    今日头条(3-30)第四题(离线)
    codeforces #204(div2)
    网易雷火笔试-打印机(区间dp)
    360笔试(3-18)编程题
    codeforces #202(div2) C
    RedisTemplate实现分布式锁
    redis的缓存穿透,缓存并发,缓存失效
    松哥整理了 15 道 Spring Boot 高频面试题,看完当面霸(转)
    我读过的最好的epoll讲解(nginx原理)--转自”知乎“
  • 原文地址:https://www.cnblogs.com/hduacm/p/2650807.html
Copyright © 2011-2022 走看看