使用栈将一个很长(>30)的十进制数转换为二进制数
使用栈实现进制转换(大数进制转换)
发布时间:2020-12-14 02:27:19 所属栏目:大数据 来源:网络整理
导读:Problem A: 使用栈实现进制转换 Time Limit:? 1 Sec?? Memory Limit:? 128 MB Submit:? 62?? Solved:? 37 [ Submit][ Status][ Web Board] Description 使用栈将一个很长(30)的十进制数转换为二进制数 Input 若干个很长的十进制数 每行一个 Output 转换为
Problem A: 使用栈实现进制转换Time Limit:?1 Sec?? Memory Limit:?128 MBSubmit:?62?? Solved:?37 [ Submit][ Status][ Web Board] DescriptionInput 若干个很长的十进制数
每行一个 Output 转换为二进制,每行输出一个
Sample Input123456789012345678901234567890
753951684269875454652589568545854758545824
Sample Output1100011101110100100002222211101101100001101110022222000001110111001001110002222210000101011010010 10001010011110101010001101001000100100100000101001011010001010101001000100111101011001110001000222220010001000101102222210110110100110100000 HINT
#include<cstdio> #include<iostream> #include<cstring> const int maxn=1000; using namespace std; int t[maxn],A[maxn]; char str1[maxn],str2[maxn]; int n,m; void solve(char *str1,char *str2,int n,int m) { int i,len,k; len=strlen(str1); for(i=len;i>=0;i--) { t[len-1-i]=str1[i]-(str1[i]<58?48:str1[i]<97?55:61); } for(k=0;len;) { for(i=len;i>=1;i--) { t[i-1]+=t[i]%m*n; t[i]/=m; } A[k++]=t[0]%m; t[0]/=m; while(len>0&&!t[len-1]) { len--; } } str2[k]=NULL; for(i=0;i<k;i++) { str2[k-1-i]=A[i]+(A[i]<10?48:A[i]<36?55:61); } } int main() { while(cin>>str1) { solve(str1,str2,10,2); cout<<str2<<endl; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |