九度[1080]进制转换

 1 # include<iostream>
 2 # include<string>
 3 # include<cstring>
 4 using namespace std;
 5 struct bigint{ //定义一个大整数类
 6     int a[500];
 7     int remain;
 8     int i;
 9     bigint & operator*(int & value){ //重载乘法
10         for(i=0;i<500;i++)
11             a[i]=a[i]*value;
12         int c=0;
13         for(i=0;i<500;i++){
14             a[i]=a[i]+c;
15             c=a[i]/100;
16             a[i]=a[i]%100;
17         }
18         return *this;
19     }
20     bool operator !=(const int & value) //判断整数是否为0
21     {
22         for(i=0;i<500;i++)
23             if(a[i]!=value) break;
24         if(i<500) return true;
25         return false;
26     }
27     bigint & operator/(int &value){//重载除法
28         int c=0;
29         for(i=499;i>=0;i--)
30             if(a[i]!=0) break;
31         //cout<<"i"<<i<<endl;
32         for(;i>=0;i--)
33         {
34             a[i]=(a[i]+c*100);
35             c=a[i]%value;
36             a[i]=a[i]/value;
37         }
38         remain=c;
39         return *this;
40     }
41 };
42 int main(){
43     int m=0,n=0;
44     int i=0;
45     while(cin>>m>>n){
46         string s;
47         cin>>s;
48         if(s=="0") {cout<<0<<endl;continue;}
49         int l=s.size();
50         bigint bida;
51         memset(bida.a,0,sizeof(bida.a));
52         for(i=0;i<l;i++)
53         {
54             int k=m;
55             if(i!=0) bida=bida*k;
56             if(s[i]<=‘9‘) {
57                 int k=s[i]-‘0‘;
58                 bida.a[0]=bida.a[0]+k;
59             }
60             else {
61                 int k=s[i]-‘A‘+10;
62                 bida.a[0]=bida.a[0]+k;
63             }
64         } //转换为十进制数bida;
65         //cout<<bida.a[0];
66         int b[2000];
67         i=0;
68         memset(b,0,sizeof(b));
69         while(bida!=0){
70             bida=bida/n;
71             b[i]=bida.remain;
72             i++;
73         }
74         for(i=i-1;i>=0;i--)
75         {
76             if(b[i]>9) {char c=b[i]-10+‘a‘;cout<<c;}
77             else cout<<b[i];
78         }
79         cout<<endl;
80     }
81     return 0;
82 }

写得有点儿乱,先传上。回头再整理

时间: 2024-10-09 23:00:18

九度[1080]进制转换的相关文章

【ACM】大数据+任意进制转换 jobdu 1080

[九度OJ] 1080 进制转换 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36).下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题考察的比较综合,进制转换+大数据 很久没有做ACM的题目了,且拿这个练练手,大整数模板是用的王道论坛的模板-贴出来备

九度oj 题目1080:进制转换

题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题初看起来另我头疼,考虑不难但是很麻烦 一开始想的比较绕,准备先把任意进制转换成10进制,再转化成n进制,于是写出了下面的代码 1 #include

hdu 4937 Lucky Number ( 进制转换+枚举 )

题意: 有一个数n,问有多少个进制x(基数)使得n转换为x进制后的数字中只有3.4.5.6四个数. 算法: 对于只有一位数的情况,显然3.4.5.6都应该输出-1. 如果有2位数,假设这2位中高位为a,低位为b,进制为base,则 n = a * base + b,解一元一次方程即可. 如果有3位数,假设这3为从高到低分别为a.b.c,进制为base,则 n = a * base * base + b * base + c,即一元二次方程即可. 如果位数>= 4,可以暴力枚举进制数.base>

QT 16进制 ASII &nbsp; 10进制 转换

 //16进制字符串转字节数组     static QByteArray HexStrToByteArray(QString str)     {         QByteArray senddata;  //发送数据         int hexdata,lowhexdata;         int hexdatalen = 0;         int len = str.length();  //求出发送字符传唱度         senddata.resize(len/2); /

JS-011-颜色进制转换(RGB转16进制;16进制转RGB)

在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#000080,#FA08FA)转换时总是提示颜色非法,看了一下 js 源码,发现其进制转换的方法是错误的.找了一下度娘和谷大爷,最终写了一个颜色转换的小方法,源码如下所示: String.prototype.colorHex2Rgb = function(){ var reg = /^#([0-9a-fA-

HDU 4937 Lucky Number (数学,进制转换)

题目 参考自博客:http://blog.csdn.net/a601025382s/article/details/38517783 //string &replace(iterator first0, iterator last0,const_iterator first, const_iterator last); //把[first0,last0)之间的部分替换成[first,last)之间的字符串 /* 题意: 我们将3,4,5,6认为是幸运数字.给定一个十进制数n. 现在可以讲起任意转

2014.12.20学习进制转换

进制转换:二进制,八进制,十进制,十六进制. (一)二进制转十进制: 1.写2 2.标指数,从右向左,从0开始依次标记 3.乘系数,一一对应. 4.相加. 例:二进制数1101转十进制数* 1.2   2   2   2 2.2^3   2^2   2^1   2^0 3.1*2^3   1*2^2   0*2^1   1*2^0 4.1*2^3+1*2^2+0*2^1+1*2^0=13 (二)十进制转二进制:除2取余 1.用竖式,对十进制数依次除2,记录每一步余数. 2.一直除到商0为止,从下

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

C#整理1——进制转换

进制转换:二进制,八进制,十进制,十六进制. (一)二进制转十进制: 1.写2 2.标指数,从右向左,从0开始依次标记 3.乘系数,一一对应. 4.相加. 例:二进制数1101转十进制数* 1.2   2   2   2 2.2^3   2^2   2^1   2^0 3.1*2^3   1*2^2   0*2^1   1*2^0 4.1*2^3+1*2^2+0*2^1+1*2^0=13 (二)十进制转二进制:除2取余 1.用竖式,对十进制数依次除2,记录每一步余数. 2.一直除到商0为止,从下