noi.openjudge 1.13.44
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的更多相关文章
- noi.openjudge 1.13.15
http://noi.openjudge.cn/ch0113/15/ 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范 ...
- noi.openjudge 2.6.162 Post Office
http://noi.openjudge.cn/ch0206/162/ 总时间限制: 1000ms 内存限制: 65536kB 描述 There is a straight highway wit ...
- C++primer 练习13.44
13.44:编写标准库string类的简化版本,命名为String.你的类应该至少有一个默认构造函数和一个接受C 风格字符串指针参数的构造函数.使用allocator为你的String类分配所需内存 ...
- noi.openjudge 1.12.6
http://noi.openjudge.cn/ch0112/06/ 总时间限制: 2000ms 内存限制: 65536kB 描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传 ...
- noi.openjudge——8465 马走日
http://noi.openjudge.cn/ch0205/8465/ 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 1024kB 描述 马在中国象棋以日字形规则移动. 请编写 ...
- noi.openjudge——2971 抓住那头牛
http://noi.openjudge.cn/ch0205/2971/ 总时间限制: 2000ms 内存限制: 65536kB 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫 ...
- noi openjudge 1768:最大子矩阵
链接:http://noi.openjudge.cn/ch0406/1768/ 描述已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...
- noi openjudge 6044:鸣人和佐助
http://noi.openjudge.cn/ch0205/6044/ 描述佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个 ...
- noi题库(noi.openjudge.cn) 1.13编程基础之综合应用 T12 分数求和
12:分数求和 描述 输入n个分数并对他们求和,并用最简形式表示.所谓最简形式是指:分子分母的最大公约数为1:若最终结果的分母为1,则直接用整数表示. 如:5/6.10/3均是最简形式,而3/6需要化 ...
随机推荐
- 在Mac 系统上使用MAMP搭建PHP开发环境
1.下载MAMP套件 下载地址为https://www.mamp.info/en/ 2.安装此.dmg文件 3.配置apache虚拟主机 (1)在/Applications/MAMP/conf/apa ...
- Hotspot Java虚拟机的类加载器
从Java虚拟机角度来讲,有两种类加载器.1.启动类加载器.(Bootstrap ClassLoader,C++)2.所有其他类加载器.(Java,java.lang.ClassLoader) 系统提 ...
- java 运行 .jar 文件乱码
http://yang3wei.github.io/blog/2013/02/10/java-dfile-dot-encoding-equals-utf-8-gan-diao-luan-ma/ 启动时 ...
- ORACLE 增加两列字段
declare v_cnt number; V_SQL VARCHAR2 (500) := '';begin select count(*) into v_cnt from dual where ex ...
- cuda编程-矩阵乘法(1)
本方法采用简单的单线程计算每组行和列乘加运算 代码如下: #include <stdio.h> #include <stdlib.h> #include <iostrea ...
- vuex2.0 基本使用(3) --- getter
有的组件中获取到 store 中的state, 需要对进行加工才能使用,computed 属性中就需要写操作函数,如果有多个组件中都需要进行这个操作,那么在各个组件中都写相同的函数,那就非常麻烦,这 ...
- 【Java】Android EditText开发的一个容易忽略的坑
这几天接手做一个远程控制Android application,安卓前台的EditText用来输入ip地址.端口等信息,发现EditText的使用存在着巨坑一个! 我在网上找了半天,发现仅仅有人提出这 ...
- PHP——base64的图片的另类上传方法
前言 这只是个暂行的办法,回头研究好七牛云的base64上传或者vue的文件上传后还是要进行更改的 想法是这样的,既然前端只能穿base64的那就传base64的然后转为文件上传到七牛云后再删除 本地 ...
- P1164 小A点菜
原题链接 https://www.luogu.org/problemnew/show/P1164 此题是一道简单的动规问题 才学两天不是很熟练,我苦思冥想看着题解终于想出来了. 主要的思路如下: 我们 ...
- 洛谷P1360 [USACO07MAR]黄金阵容均衡题解
题目 不得不说这个题非常毒瘤. 简化题意 这个题的暴力还是非常好想的,完全可以过\(50\%\)的数据.但是\(100\%\)就很难想了. 因为数据很大,所以我们需要用\(O(\sqrt n)\)的时 ...