进制转化 poj1220 poj3191
来源:互联网 发布:wincc 用什么语言编程 编辑:程序博客网 时间:2024/05/09 11:01
Sample Input
862 2 abcdefghiz10 16 123456789012345678901234567890123456789016 35 3A0C92075C0DBF3B8ACBC5F96CE3F0AD235 23 333YMHOUE8JPLT7OX6K9FYCQ8A23 49 946B9AA02MI37E3D3MMJ4G7BL2F0549 61 1VbDkSIMJL3JjRgAdlUfcaWj61 5 dl9MDSWqwHjDnToKcsWE1S5 10 42104444441001414401221302402201233340311104212022133030
Sample Output
62 abcdefghiz2 1101110000010001011111001001011001111100100110001101001000110 123456789012345678901234567890123456789016 3A0C92075C0DBF3B8ACBC5F96CE3F0AD216 3A0C92075C0DBF3B8ACBC5F96CE3F0AD235 333YMHOUE8JPLT7OX6K9FYCQ8A35 333YMHOUE8JPLT7OX6K9FYCQ8A23 946B9AA02MI37E3D3MMJ4G7BL2F0523 946B9AA02MI37E3D3MMJ4G7BL2F0549 1VbDkSIMJL3JjRgAdlUfcaWj49 1VbDkSIMJL3JjRgAdlUfcaWj61 dl9MDSWqwHjDnToKcsWE1S61 dl9MDSWqwHjDnToKcsWE1S5 421044444410014144012213024022012333403111042120221330305 4210444444100141440122130240220123334031110421202213303010 1234567890123456789012345678901234567890
题目意思就是:在T组数据中,从进制m转化为进制n
#include<stdio.h>#include<string.h>int n,m;char a[555],ans_str[555];int c[555];int ans_int[555];int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d%s",&n,&m,a);//-----------------------------------------//if(a[0]=='0'){printf("%d %s\n%d 0\n\n",n,a,m);continue;}//-----------------------------------------//for(int i=0;i<strlen(a);i++){if(a[i]>='A'&&a[i]<='Z')c[i]=a[i]-'A'+10;else if(a[i]>='a'&&a[i]<='z')c[i]=a[i]-'a'+36;elsec[i]=a[i]-'0';}//-----------------------------------------//int pos=0;while(pos<555){int ans=0;for(int i=0;i<strlen(a);i++){ans=ans*n+c[i];c[i]=ans/m;ans=ans%m;}ans_int[pos++]=ans;}//-----------------------------------------// memset(ans_str,'0',sizeof(ans_str[0]));for(int j=0;j<pos;j++){if(ans_int[j]>=10&&ans_int[j]<=35)ans_str[pos-j-1]=ans_int[j]+'A'-10;else if(ans_int[j]>=36&&ans_int[j]<=61)ans_str[pos-j-1]=ans_int[j]+'a'-36;elseans_str[pos-j-1]=ans_int[j]+'0';}//-----------------------------------------//printf("%d %s\n%d ",n,a,m);int tag=1;for(int i=0;i<pos;i++){if(ans_str[i]=='0'&&tag)continue;if(ans_str[i]!='0')tag=0;printf("%c",ans_str[i]);}puts("\n");//-----------------------------------------//}return 0;}
代码中需要注意的是:
int pos=0;while(pos<555){int ans=0;for(int i=0;i<strlen(a);i++){ans=ans*n+c[i];c[i]=ans/m;ans=ans%m;}ans_int[pos++]=ans;}这里是同余求模定理
可以见我的另外的一片bloghttp://blog.csdn.net/summer__show_/article/details/50716283
题意:把一个int型的十进制的转化位一个-2进制的数
解析:
例如:
把 -6 进制的123数字转化为十进制的数
1 * (-6)*(-6)+2*(-6)+3
反之,将负进制转化位正进制
找到一个最小的非负整数 x 使得当前数减去x能被6 整除,这个x将被作为最新的最高位写到结果中
然后这个数减去x 除以 -6 ,循环做这两步即可
#include<stdio.h>#include<string.h>int main(){int a;int ans[1005];scanf("%d",&a); if(a==0){ printf("0\n"); return 0; } memset(ans,0,sizeof(ans)); int i=0; while(a) { ans[i]=a%2; if(ans[i]<0) ans[i]=-ans[i]; a-=ans[i]; a/=(-2); i++; } for(int j=i-1;j>=0;j--) printf("%d",ans[j]);return 0;}
0 0
- 进制转化 poj1220 poj3191
- poj1220(多种进制转换) poj3191(负数进制)
- POJ1220(高精度进制转换)
- POJ3191【(-2)进制本质】
- poj1220 (高精度任意进制转换)
- poj1220(高精度模版,进制转换)
- 进制转换 poj1220-NUMBER BASE CONVERSION
- poj1220
- poj1220
- poj1220-任意进制转换(瞻仰下大牛代码)
- The Moronic Cowmpouter poj3191(负进制转换以及其他进制转换模板)
- POJ3191-The Moronic Cowmpouter
- poj1220 NUMBER BASE CONVERSION
- 进制转化
- 进制转化
- 进制转化
- 进制转化
- 进制转化
- from实现struts上传,允许回调
- LeetCode 136: Single Number
- Telnet与SSH两大协议的区别
- C++第五次剩余项目—数组选择(非实验和作业)
- formatDate-------date、datetime型数据用EL表达式在页面显示
- 进制转化 poj1220 poj3191
- php脚本配置
- Swift开发:GCDAsyncSocket通信之TCP 客户端
- iOS每日一记——————————iOS开发当中的一些技巧
- 《App研发录》读书笔记
- Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
- intellj idea 如何设置类头注释和方法注释
- Cannot use object of type PHPExcel_RichText as array
- mybatis-generator使用之generatorConfig.xml配置文件