题目链接:点击查看

题目大意:给出两个进制x和y,再给出一个x进制下的数num,求num转换为y进制后的答案

题目分析:直接套模板就行了,进制转换没什么好说的,直接模拟,这个题开了加速外挂只能优化几十ms,最后还是跑了400多ms,应该是大数的板子不够快,不过够用就好了。。后面会学java的

唯一值得吐槽的就是,这不就是银川现场赛的原题吗?然后这个题的数据比较水,大数的N开到150就能A了

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=150;//最大长度const string ss="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";int mp[150]; string sub(string a, string b,int base=10)
{int i,j,k,s;string tmpa,tmpb,c,ans;tmpa.resize(N);tmpb.resize(N);c.resize(N);if(a.size()<b.size()||a.size()==b.size()&&a<b) {swap(a,b);ans+='-';}while(a.length()>b.length()) b='0'+b;int len=a.length();for(i=0;i<len;i++) {tmpa[i]=mp[a[i]];tmpb[i]=mp[b[i]];}for(i=len-1;i>=0;i--) {if (tmpa[i]>=tmpb[i]) c[i]=tmpa[i]-tmpb[i];else {c[i]=base+tmpa[i]-tmpb[i];tmpa[i-1]--;}}for(i=0;i<len-1;i++) if(c[i]!=0) break;for(j=i;j<len;j++) ans+=ss[c[j]];return ans;
}string Except(string s,long long x,int base=10)  //大数除以整形数
{long long cmp=0;bool ok=false;string ans="";for(int i=0;i<s.size();i++){cmp=(cmp*base+mp[s[i]]);if(cmp>=x){ok=true;ans+=ss[cmp/x];cmp%=x;}else{if(ok)ans+='0';  //注意这里}}if(ans.empty())return "0";return ans;
}void postpoint(string& a)//移位处理
{int len=a.size();a.resize(N);for(int i=0;i<len;i++){a[N-i-1]=a[len-i-1];a[len-i-1]=0;}
}string change(const string& a)//用于解除postpoint
{string ans;for(int i=0;i<N;i++)if(a[i])ans+=a[i];return ans;
}string plu(string a,string b,int base=10)
{postpoint(a);postpoint(b);string temp;temp.resize(N);int f=0;for(int i=N-1;a[i]||b[i]||f;i--){a[i]==0?a[i]='0':0;b[i]==0?b[i]='0':0;temp[i]=(mp[a[i]]+mp[b[i]]+f)%base;f=(mp[a[i]]+mp[b[i]]+f)/base;temp[i]=ss[temp[i]];}return change(temp);
}string mul(string a,long long n,int base=10)
{postpoint(a);string temp;temp.resize(N);int f=0;for(int i=N-1;a[i]||f;i--){a[i]==0?a[i]='0':0;temp[i]=(mp[a[i]]*n+f)%base;f=(mp[a[i]]*n+f)/base;temp[i]=ss[temp[i]];}return change(temp);
}long long remain(string s,long long mod,int base=10)
{long long ans=0;for(int i=0;i<s.size();i++)ans=(ans*10+mp[s[i]])%mod;return ans;
}void init()
{for(int i=0;i<ss.size();i++)mp[ss[i]]=i;
}int main()
{
//  freopen("input.txt","r",stdin);ios::sync_with_stdio(false);init();int w;cin>>w;while(w--){int x,y;string s;cin>>x>>y>>s;if(s=="0"){cout<<x<<' '<<0<<endl;cout<<y<<' '<<0<<endl<<endl;continue;}string num="0";for(int i=0;i<s.size();i++)num=plu(mul(num,x),s.substr(i,1));string ans;while(num!="0"){ans+=ss[remain(num,y)];num=Except(num,y);}reverse(ans.begin(),ans.end());cout<<x<<' '<<s<<endl;cout<<y<<' '<<ans<<endl<<endl;}return 0;
}

POJ - 1220 NUMBER BASE CONVERSION(高精度运算+进制转换+模拟)相关推荐

  1. 计算机系统-理论-CPU操作/处理数据的方式/寻址方式/局部性原理/位运算/进制转换

    在计算机中,cpu将一切硬件,都看成内存,各种硬件在CPU的眼中都是下面这样子的 CPU对硬件的操作,其实就是和这些硬件的内存或者BIOS进行交互,CPU能做且只能做三件事 1.将某个地址中存储的字节 ...

  2. 神奇的位运算——进制转换问题(16转8)

    说道位运算符,应该都了解,但是很少有人会用,在网上看别人的代码,我至今只见过一道题用到了位运算符,并被它深深的搞晕了(当然,他搞晕我是要负责的,我现在已经深深的迷上了他,真的是太神奇了),位运算符的原 ...

  3. 探索C/C++ 进制转换之美:从原理到应用

    一.简介 (Introduction) 进制 前缀表示 整数常量示例 转换库接口 参数及返回值示例 二进制 0b 或 0B 0b1010 std::bitset<> std::bitset ...

  4. 进制转换2 (清华大学考研机试)

    文章目录 题目 AC代码 题目 本题链接:进制转换2 本博客给出本题截图: AC代码 代码解释:其实就是涉及到高精度的进制转换问题,高精度讲解详见:高精度运算,高精度模板见:高精度算法模板,本题和进制 ...

  5. UVA10473 Simple Base Conversion【进制转换】

    In this problem you are asked to write a simplebase conversion program. You will be givena hexadecim ...

  6. POJ1220(高精度进制转换)

    题目:NUMBER BASE CONVERSION 就是后面的数字以a进制的形式给出,要求转化为b进制输出. #include <stdio.h> #include <string. ...

  7. poj1220:高精度进制转换模板题

    今天撸3708  一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...

  8. 19章 位运算与进制转换

    1.进制转换 1.1整数进制转换 例:10进制转16进制 (114514)10=(BF52)16 方法:除16取余法 1.2整数进制转换例题 方法1: #include <stdio.h> ...

  9. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

最新文章

  1. 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...
  2. elasticsearch 分布式部署
  3. Java IO: 网络
  4. SCU - 4438 Censor
  5. tensorflow手册_谷歌TensorFlow开发者认证考试来了!哪些要点需要了解?
  6. 4、Angular JS 学习笔记 – 创建自定义指令 [翻译中]
  7. 329. Longest Increasing Path in a Matrix 矩阵中的最长递增路径
  8. 计算机基础说课 word,计算机基础说课稿
  9. webpack 4.0 配置文件 webpack.config.js文件的放置位置
  10. 理解JQuery中的data()使用方法
  11. 【刷算法】LeetCode- 两数之和 1
  12. Python 字典(Dictionary) items()方法
  13. NVIDIA H264解码是硬件电路还是CUDA
  14. java单例模式与线程安全
  15. LCD液晶显示器的相关知识
  16. 37岁Java程序员求职6K+职位被怼,你怎么看?
  17. 苹果IOS14版本自建服务器无法下载解决方法
  18. iOS-打开本地或下载的Excel文件
  19. 学习TypeScrip1(基础类型)
  20. 给div加滚动条 div显示滚动条设置代码

热门文章

  1. war包部署-配置入口类
  2. 初步认识Volatile-缓存一致性协议
  3. 实例化Spring Bean:Bean实例化的姿势有多少种?
  4. RocketMQ消息发送及消费的基本原理
  5. MapReduce案例-wordcount-准备工作
  6. 整合springMVC
  7. BufferedWriter_字符缓冲输出流
  8. Spring 整合 RocketMQ
  9. 结构体位域及联合体解析
  10. 架设mediawiki服务器续--安装VisualEditor编辑器