进制转换

初赛:进制转换

一曲冷凌霜 提交于 2019-11-29 22:01:48
十进制转 $n$ 进制: 整数部分:$/n$ 取整,将余数依次排开,倒着将余数连在一起即为答案. 例:17 转 8进制:17/8=2...1, 2/8=0...2,则答案为 21. 小数部分:$\times n$ 取整,将整数部分扣掉,重复此过程,直到为 $1$. 来源: https://www.cnblogs.com/guangheli/p/11536638.html

2031 HDOJ 进制转换

你说的曾经没有我的故事 提交于 2019-11-29 17:53:58
Problem Description 输入一个十进制数N,将它转换成R进制数输出。 Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。 Output 为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。 Sample Input 7 2 23 12 -4 3 Sample Output 111 1B -11 参考代码如下:需要说明的都已注释标出。 /*进制转换*/ #include<iostream> #include<algorithm> #include<string> using namespace std; int main() { int N,R; string a("0123456789ABCDEFG"); while(cin>>N>>R) //输入数字N,要转换到的进制R { string s=""; bool flag=true; if(N<0) //若N为负,进行处理 { flag=false; N=-N; } if(N==0) cout<<0<<endl; while(N>0) { s=s+a[N%R]; N/=R; } if(!flag) { s="-"+s; } reverse(s.begin(),s.end()); /

华为研发工程师——进制转换

天大地大妈咪最大 提交于 2019-11-29 17:09:11
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 输入例子1: 0xA 输出例子1: 10 假题 # include <iostream> # include <cstdio> # include <set> # include <cstring> using namespace std ; int n , t , temp ; char s [ 1000 ] ; long long sum = 0 ; int main ( ) { while ( scanf ( "%s" , s ) != EOF ) { int len = strlen ( s ) ; sum = 0 ; for ( int i = 2 ; i < len ; i ++ ) { if ( '0' <= s [ i ] && s [ i ] <= '9' ) temp = s [ i ] - '0' ; else temp = s [ i ] - 'A' + 10 ; sum = sum * 16 + temp ; } cout << sum << endl ; } return 0 ; } 来源: https://blog.csdn.net/hg_zhh/article/details

算法题----任意进制转换

痞子三分冷 提交于 2019-11-29 05:59:31
/* 求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。 输入 输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。 输出 可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。 样例输入4 10 123 样例输出27 */ #include <bits/stdc++.h> #include <cstring> using namespace std; int toInt(char x) { if(x >= '0' && x <= '9') return x - '0'; else if( x >= 'a' && x <= 'z') return x - 'a' + 10; else return x - 'A' + 10; } char toChar(int x) { if( x>=0 && x<=9) return '0' + x; else return 'A' + x - 10; } int main() { int a, b; //

洛谷 P1017 进制转换

前提是你 提交于 2019-11-29 04:57:52
洛谷 P1017 进制转换 题意 给你一个数,让你用负进制来进行表示。输入是两个数,一个是要表示的数,另一个是进制数。 解题思路 看的题解,这个有点蒙。 首先答题思路就是用r来进行模运算,但是模的过程中可能出现负数,这个就不好了,我们需要从上一位来进行借1。 这里把余数从负数转换为整数的方法是本身减去进制数(注意,这个进制数是负数,其实就是加上绝对值),然后商需要加1。 代码实现 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; void solve(int n, int r) { if(n==0) return ; int m=n%r; if(m<0) { m-=r; n+=r; } if(m>=10) m='A'+m-10; else m+='0'; solve(n/r, r); printf("%c", m); return ; } int main() { int n, r; scanf("%d%d", &n, &r); printf("%d=", n); solve(n, r); printf("(base%d)", r); return 0; } 来源: https://www.cnblogs.com/alking1001/p/11455411.html

python进制转换

本小妞迷上赌 提交于 2019-11-28 18:46:51
代码源于网络: 十六进制转ascii与ascii转十六进制 #!/usr/bin/python # -*- coding: UTF-8 -*- class Converter(object): def to_ascii(h): list_s = [] for i in range(0,len(h),2): list_s.append(chr(int(h[i:i+2],16))) return ''.join(list_s) def to_hex(s): list_h = [] for c in s: list_h.append(str(hex(ord(c))[2:])) return ''.join(list_h) print(Converter.to_hex("hello world!")) print(Converter.to_ascii("68656c6c6f20776f726c6421")) 来源: https://www.cnblogs.com/v01cano/p/11421081.html

负进制转换

偶尔善良 提交于 2019-11-28 08:02:56
一般我们求的较多的就是十进制转二进制,八进制,十六进制,这样的转换我们只需要不断的取余即可,然后输出 附上代码: #include<iostream> using namespace std; int main() { char A[]={'A','B','C','D','E','F','G','H','I','J'}; int N,R;//N代表要转换的数,R代表要转换成R进制; cin>>N>>R;//R为正 int B[1000]; cout<<N<<"="; int x=0; while(N!=0) { B[x]=N%R; N/=R; x++; } x--; for(int i=x;i>=0;i--)//倒叙输出 { if(B[i]>=10) cout<<A[B[i]-10];//超出10,用字母表示 else cout<<B[i]; } cout<<"(base"<<R<<")"; return 0; } 然而出了将一个数转换为正进制数,我们还有将一个数转换为负进制数。遇到了负进制数,我们取余的时候余数会出现负的情况。 我们就要处理这个负数的情况。 我们可以经过以下的变换: N/R=B.....X: N是被除数,R是除数(R为负数),B是商,X是余数。 B*R+X=N : B*R+X-R+R=N: (B+1)*R+X-R=N: 经过这样的变换之后那么X-R就是正数了