http://noi.openjudge.cn/ch0113/44/

总时间限制: 
1000ms
内存限制: 
65536kB
描述

将 p 进制 n 转换为 q 进制。p 和 q 的取值范围为[2,36],其中,用到的数码按从小到大依次为:0,1,2,3,4,5,6,7,8,9,A,B,...,Z,不考虑小写字母



。 

输入

一共1+m 行: 
第1行为 m,表示后面有 m 行(1 <= m <= 60). 
其后的m行中,每行3个数: 进制p,p进制数n,以及进制 q。 
三个数之间用逗号间隔。
n 的长度不超过50位。输出转换后的 q 进制数。样例输入

6
18,2345678A123,18
15,23456,18
12,2345678,20
16,12345678,23
25,3456AB,21
18,AB1234567,22

样例输出

2345678A123
114E0
22B7A4
21A976L
7C2136
22JF0G367

思路:

对于这一题来说,肯定是要用到字符串来模拟计算的,但是你会发现事情没有那么简单,它不想大整数加法那样可以直接来进行计算,我能想到的就是现将其转换为10进制,再转换为其他进制,那么在这个时候,又要用到大整数的加法了,写起来并不是不可以,可是我觉得太麻烦了,于是这一题就一直放在这里,直到我看见一篇好文:浅谈大数进制转换

这是AC代码:

其实还有一个问题在我心中没有解决,那就是在进行一次除法运算之后,为什么这个数还是p进制的,它不是明明已经*p变为十进制的数了吗?

#include<stdio.h>
#include<string.h>
char c[200];
int s[200];
int a,b;
int ans[200];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",c);
int l=strlen(c);
b=a=0;
int t;
int y=0;
for(t=0;t<l;t++){
if(c[t]==','){break;}
a=a*10+c[t]-48;
}
for(t++;t<l;t++){
if(c[t]==','){s[y]=0;break;}
if(c[t]>=48&&c[t]<=57){
s[y++]=c[t]-48;
}
else if(c[t]>=65&&c[t]<=90){
s[y++]=c[t]-55;
}
}
for(t++;t<l;t++){
b=b*10+c[t]-48;
}
memset(c,0,sizeof(c)); int rec;
int k=y;
int p=0;
int book=1;
while(book){
rec=0;
for(int i=0;i<k;i++){
rec=rec*a+s[i];
s[i]=rec/b;
rec=rec-s[i]*b;
}
ans[p++]=rec;
book=0;
for(int i=0;i<k;i++){
if(s[i]!=0){book=1;break;}
}
}
int flag=0;
for(int i=p-1;i>=0;i--){
if(ans[i]!=0){flag=1;}
if(flag==1){
if(ans[i]>=10){printf("%c",ans[i]+55);}
else printf("%d",ans[i]);
}
}
if(flag==0){printf("%d",0);}
printf("\n");
memset(ans,0,sizeof(ans));
}
}

noi.openjudge 1.13.44的更多相关文章

  1. noi.openjudge 1.13.15

    http://noi.openjudge.cn/ch0113/15/ 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范 ...

  2. noi.openjudge 2.6.162 Post Office

    http://noi.openjudge.cn/ch0206/162/ 总时间限制:  1000ms 内存限制:  65536kB 描述 There is a straight highway wit ...

  3. C++primer 练习13.44

    13.44:编写标准库string类的简化版本,命名为String.你的类应该至少有一个默认构造函数和一个接受C 风格字符串指针参数的构造函数.使用allocator为你的String类分配所需内存 ...

  4. noi.openjudge 1.12.6

    http://noi.openjudge.cn/ch0112/06/ 总时间限制:  2000ms 内存限制:  65536kB 描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传 ...

  5. noi.openjudge——8465 马走日

    http://noi.openjudge.cn/ch0205/8465/ 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  1024kB 描述 马在中国象棋以日字形规则移动. 请编写 ...

  6. noi.openjudge——2971 抓住那头牛

    http://noi.openjudge.cn/ch0205/2971/ 总时间限制:  2000ms 内存限制:  65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫 ...

  7. noi openjudge 1768:最大子矩阵

    链接:http://noi.openjudge.cn/ch0406/1768/ 描述已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...

  8. noi openjudge 6044:鸣人和佐助

    http://noi.openjudge.cn/ch0205/6044/ 描述佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个 ...

  9. noi题库(noi.openjudge.cn) 1.13编程基础之综合应用 T12 分数求和

    12:分数求和 描述 输入n个分数并对他们求和,并用最简形式表示.所谓最简形式是指:分子分母的最大公约数为1:若最终结果的分母为1,则直接用整数表示. 如:5/6.10/3均是最简形式,而3/6需要化 ...

随机推荐

  1. Visual Studio for Mac中的ASP.NET Core

    所以你们都听到了#Build 2017的消息,Mac上的Visual Studio已经被完全发布,是一般的.为了庆祝这个版本,我将在我的Mac上写几篇关于构建一些不同的.net应用的帖子. 正如你已经 ...

  2. 安装 BizTalk Server 2016

    在单台计算机上安装 BizTalk Server. 开始操作之前       系统管理员 – 安装 SQL Server 时,安装程序会自动向登录的帐户授予系统管理员权限. 由于安装 BizTalk ...

  3. mac上录制无声mp3

    想要录制音频很多方法,要无声音频 你可以使用调试软件 那么mac的录制音频,可以用这个软件 将耳机插头插在话筒插孔内,录制出来了m4a文件, 进入转换网站 开始转换下载

  4. 如何在Ubuntu 18.04上安装Django

    Django是一个免费的开源高级Python Web框架,旨在帮助开发人员构建安全,可扩展和可维护的Web应用程序. 根据您的需要,有不同的方法来安装Django.它可以使用pip在系统范围内安装或在 ...

  5. BZOJ2127happiness——最小割

    题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...

  6. Django+Vue打造购物网站(三)

    商品列表页 通过商品列表页面来学习drf django的view实现商品列表页 在goods目录下新建一个views_base.py文件,用来区分drf的view和Dajngo自带的view的区别 利 ...

  7. 对Redis的理解

    1.redis使用的场景 热点数据(经常会被查询,但是不经常被修改或者删除的数据)

  8. poi的cellstyle陷阱,样式覆盖

    问题 cell.getCellStyle().setFont(font); 这句话本来只是想设置这一个单元格cell的字体样式,但是实际上却影响了很多个单元格的样式. 问题出在了,Excel模板中这些 ...

  9. HDOJ 5666//快速积,推公式

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5666 题意:给一条直线x+y=q,在(0,0)往x+y=q上面的整数点连线,x+y=q与x,y轴截成的三角 ...

  10. 解决Eclipse每次修改完代码后需要先Clean,不然修改的代码无效

    工具栏 Project-->Build Automatically 勾选上即可