1813. M进制数问题
来源:互联网 发布:微信域名入口页 编辑:程序博客网 时间:2024/05/29 09:43
1813. M进制数问题
Total: 1075Accepted:326Rating:
2.6/5.0(9 votes)
012345
Time Limit: 1sec Memory Limit:32MB
Description
试用 C++的类来表示一般进制数。
给定 2 个n位m进制整数A和B,计算m进制数整数P = A / B (向下取整)与 Q = A % B的值。
Input
输入包含多个测试点。第一行为一个整数T,表示测试点数。
对于每个测试点第 1 行是进制 m 。第 2 行和第 3 行分别给出 m 进制整数 A 和 B。
所有 m 进制数的10进制表示均不超出int范围。
Output
对于每个测试点,第一行输出 m 进制数整数 P = A / B 的值,第二行输出 Q = A % B 的值。
Sample Input
Copy sample input to clipboard
11629FA57
Sample Output
5FF30
思路 将当位数字超过10的转换为数字-》将该m进制数转为10进制-》运算-》转换回来m进制
代码如下:(注意,size不能设得太小,之前设个size=10,结果function restriction,后来改为16(int 长度),问题解决)
// source code of submission 736612, Zhongshan University Online Judge System
002.
#include<iostream>
003.
#include<cstring>
004.
#include<stdio.h>
005.
#include<cmath>
006.
#define size 16
007.
using
namespace
std;
008.
class
Step
009.
{
010.
public
:
011.
int
step;
//进制数
012.
char
num[size];
//用于储存m进制数含字母表示方法
013.
int
Dnum;
//转换为10进制之后的数据
014.
Step(
int
m)
//constructor
015.
{
016.
cin>>num;
017.
step=m;
018.
Dnum=0;
019.
}
020.
int
mToD()
//m进制转10进制
021.
{
022.
int
i;
023.
int
len=
strlen
(num);
024.
for
(i=0;i<len;i++)
025.
{
026.
if
(num[i]>=
'0'
&&num[i]<=
'9'
)
027.
{
028.
Dnum=Dnum+(num[i]-
'0'
)*(
int
)
pow
((
double
)step,len-i-1);
029.
}
030.
else
if
(num[i]>=
'A'
&&num[i]<=
'Z'
)
031.
{
032.
Dnum=Dnum+(num[i]-
'A'
+10)*(
int
)
pow
((
double
)step,len-i-1);
033.
}
034.
}
035.
return
0;
036.
}
037.
038.
};
039.
040.
int
dToM(
int
num,
int
step)
//十进制转m进制,直接在函数中输出到屏幕中
041.
{
042.
char
mNum[size];
043.
int
i;
044.
for
(i=0;;i++)
045.
{
046.
if
(num<step)
047.
{
048.
if
(num>=10)
049.
{
050.
mNum[i]=num-10+
'A'
;
051.
}
052.
else
053.
{
054.
mNum[i]=num+
'0'
;
055.
}
056.
i++;
057.
break
;
058.
}
059.
else
060.
{
061.
if
(num%step>=10)
062.
{
063.
mNum[i]=num%step+
'A'
-10;
064.
num=num/step;
065.
}
066.
else
067.
{
068.
mNum[i]=num%step+
'0'
;
069.
num=num/step;
070.
}
071.
}
072.
073.
}
074.
for
(
int
j=i-1;j>=0;j--)
075.
{
076.
cout<<mNum[j];
077.
}
078.
cout<<endl;
079.
return
0;
080.
}
081.
082.
int
main()
083.
{
084.
int
t;
085.
cin>>t;
086.
while
(t--)
087.
{
088.
int
step;
089.
cin>>step;
090.
Step a(step);
091.
Step b(step);
092.
a.mToD();
093.
b.mToD();
094.
int
shang,yu;
095.
shang=a.Dnum/b.Dnum;
096.
yu=a.Dnum%b.Dnum;
097.
dToM(shang,step);
098.
dToM(yu,step);
099.
}
100.
return
0;
101.
}
- 1813. M进制数问题
- sicily--1813. M进制数问题
- Sicily 1813. M进制数问题
- Sicily 1813. M进制数问题
- [sicily]1813. M进制数问题
- 1813. M进制数问题(M进制先转成10进制,操作完后再转M进制)
- sicily1813. M进制数问题
- sicily.1813 M进制数问题
- ^m问题
- ^M 问题
- m图着色问题
- vim 解决 ^M 问题
- M-C问题
- m图着色问题
- vim显示^M问题
- linux <feff> ^M 问题
- android M权限问题
- LintCode(M)背包问题
- QT 使用QProcess 调用外部程序并截取输出流
- 《小强与小明》——正在疯传的伟大的故事
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###5.使用JLINK间接烧写u-boot至FLASH的方法与步骤
- LumiSoft.Net 读取hotmail指定的邮件
- 那些必须了解的地理信息专业基础概念
- 1813. M进制数问题
- 三十分钟掌握STL
- Reflector反编译工具
- PHP安全习惯4
- Java 加密解密zip文件
- 所思所想!
- Visual Studio 2010瘦身精简方法
- [原创]解决Magento 导出中文PDF 过大的问题。
- 访问结构体结构成员的示例