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. Lodop打印控件 打印‘接下一页’‘以下空白’

    Lodop打印控件中,超文本超过设置的打印项高度 或超过纸张,就会自动分页,纯文本通过设置为多页项也可以根据打印项高度自动分页,Lodop中还提供了许多手动分页的方法,对于多页文档中(自动分页或手动分 ...

  2. DotNetty 实现 Modbus TCP 系列 (一) 报文类

    本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 Modbus TCP/IP 报文 报文最大长度为 260 byte (ADU = 7 byte MBAP Header ...

  3. Java线程的创建方式三:Callable(四)

    一.Java实现多线程的三种方式 方式一:继承Thread类: public class Test extends Thread { public static void main(String[] ...

  4. 转载:关于JESD204B转换器与FPGA匹配的设计关键点

    http://www.dzsc.com/data/2014-11-27/107442.html 随着更多的模数转换器(ADC)和数模转换器(DAC)支持最新的JESD204B串行接口标准,出现了FPG ...

  5. 只要访问url地址 那么容器就会根据地址进行对象的创建

    只要访问url地址 那么容器就会根据地址进行对象的创建

  6. Android Studio 导致C盘过大

    转载:http://blog.csdn.net/u010794180/article/details/48004415 这是一个可看可不看的文章,不可看是对与那些 C盘 容量不紧张的人而言:而我是属于 ...

  7. 洛谷P1047校门外的树题解

    题目 此题是一个模拟题,但需要注意的一点就是它的树是从数轴的0开始,所以我们也要从0开始,这样才能实现代码. 代码: #include<iostream> using namespace ...

  8. Matplotlib学习---用wordcloud画词云(Word Cloud)

    画词云首先需要安装wordcloud(生成词云)和jieba(中文分词). 先来说说wordcloud的安装吧,真是一波三折.首先用pip install wordcloud出现错误,说需要安装Vis ...

  9. 【BZOJ3816】【清华集训2014】矩阵变换 稳定婚姻问题

    题目描述 给出一个\(n\)行\(m\)列的矩阵\(A\), 保证满足以下性质: 1.\(m>n\). 2.矩阵中每个数都是\([0,n]\)中的自然数. 3.每行中,\([1,n]\)中每个自 ...

  10. MT【245】小概率事件

    (2011年AAA测试)将一枚均匀的硬币连续抛掷$n$次,以$P_n$ 表示未出现连续3次正面的概率.求$\{P_n\}$.并讨论$\{P_n\}$单调性和极限. 分类讨论:第$n$次反面则未出现连续 ...