首页 > 其他分享 >数制转换

数制转换

时间:2023-04-19 19:45:33浏览次数:37  
标签:10 转换 进制 int 数制 十进制

问题描述:给定一个M数制的整数x,转换为N数制的数并输出;

问题分析:数制的任意转换需要清除数制与数制之间的转换关系,一般来说十进制与其他数制的转换是较为简单和有规律的;所以可以先将改数制转换为十进制数再转换为N进制数;

算法设计:

1.输入一个整数M作为其起始的数制

2.输入一个M数制的数:由于十进制以上的数会用字符A--Z来表示,所以要用一个字符型数组才可以完全储存该数;

3.将X转换为十进制数:由于第n位转换为十进制代表M的n-1次方;所以可以使用一个累乘函数来简化这个次方求和过程;该函数输入两个整数,第一个整数表示求的次方,第二个整数表示是哪个数的次方;

该字符数组中的数字字符可以用x[i]-‘0’的方式实现;而字符部分则可以用x[i]-‘A’+10的方式实现转换;

4.十进制转换为N进制:10进制转换为N进制的数可以与N求余得第一位数;除以N后再与N求余得第二位数;由此循环,并由vector函数储存每一次求余结果,最后倒序输出vector便可以得到该N进制数,要注意,N进制数如果某一位大于10需要将其转换为字母,可用‘A’+X[i]-10的char强制转换得到;

源代码:

# include<iostream>

# include<vector>

using namespace std;
int a(int i, int k)
{
int p=1;
for (int j = 0; j < i; j++)
{
p *= k;
}
return p;
}
vector <int> m;
int main ()
{
int M;
cin >> M;
string k;
int n = 0;
cin>> k;
n = k.size();
int q=0;

for (int i=0; n > 0; n--,i++)
{
int o = a(n-1, 10);
int p = 1;
if(k[i]>='0' && k[i] <= '9'){p = k[i] - '0';}
if(k[i]>='A' && k[i] >= 'Z'){p = k[i] - 'A'+10;}
q += p * a(n - 1, M);
}
int N;
cin >> N;
for (int i = q; i > 0; i /= N)
{
m.push_back(i % N);
}
for (int i = m.size()-1; i >=0; i--)
{
if (m[i] >= 10) { cout << (char)('A' + m[i] - 10); }
else cout << m[i];

}
return 0;
}

 

标签:10,转换,进制,int,数制,十进制
From: https://www.cnblogs.com/Snor9/p/17334398.html

相关文章

  • java -- 缓冲流、转换流、序列化流
    缓冲流缓冲流,也叫高效流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓......
  • 字符串转换方法
    字符串转换方法字符串转换函数转换为字符数组转换为字节数组将旧字符串替换为新字符串代码示例publicclassDemo02{publicstaticvoidmain(String[]args){//替换为字符数组//使用toCharArray方法char[]chars="abcdef".to......
  • java 用 Java 将 HashMap 转换为 TreeMap 的程序
    转载自:https://www.moonapi.com/news/24923.html HashMap 是Java1.2以来Java集合的一部分。它提供了以(键、值)对存储数据的JavaMap接口的基本实现。要访问HashMap中的值,必须知道它的键。哈希映射被称为哈希映射,因为它使用哈希技术来存储数据。Java中的树图和抽象......
  • hdoj 夹角有多大(题目已修改,注意读题) 2076 (数学&转换)
    夹角有多大(题目已修改,注意读题)TimeLimit:1000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):13233    AcceptedSubmission(s):5214ProblemDescription时间过的好快,一个学期就这......
  • hdoj The sum problem 2058 (数学等差公式&技巧转换)
    ThesumproblemTimeLimit:5000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):21416    AcceptedSubmission(s):6287ProblemDescriptionGivenasequence1,2,3,......N,yourjob......
  • 用Putty转换ppk和pem格式
    Ubuntu下安装puttysudoaptinstallputty-toolsCentos下安装puttyyuminstallputty命令:puttygenkey.ppk-Oprivate-openssh-okey.pem注意:第一个-O,O是大写,第二个-o,o是小写Windows下用Putty点Load打开ppk文件,然后Conversion选ExportOpenSSHkey注:SFTP访问用ppk,SSH访问......
  • 矩阵左乘与右乘和旋转矩阵、坐标转换
    (1封私信/82条消息)如何通俗理解矩阵左乘和右乘的区别?-知乎(zhihu.com) ......
  • JavaScript 隐式类型转换有哪些副作用
    JavaScript隐式类型转换有哪些副作用在JavaScript中,隐式类型转换指的是在运行时自动将一个数据类型转换为另一个数据类型。虽然JavaScript中的隐式类型转换有时可以使代码更简洁,但也会带来一些副作用,包括:难以预测的结果:由于JavaScript在隐式类型转换时会自动进行一些操......
  • VB调用sql server 的数据转换服务(DTS)
    先在sqlserver的数据转换服务(DTS)中新建DTS包,保存为*.dts文件,VB中调用一下即可。    注:工程--引用---MicrosoftDTSPackage....选中。    -------------------------------------------------- PrivateSubRunPackage(ByValSAsString)'S......
  • 实现货币金额中文大写转换的程序
    Functiondaxie(moneyAsString)AsString'DimxAsString,yAsStringConstzimu=".sbqwsbqysbqwsbq"'定义位置代码Constletter="0123456789sbqwy.zjf"'定义汉字缩写Constupcase="零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分"'定义大写汉字Dimtem......