题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
生活随笔
收集整理的這篇文章主要介紹了
题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接:http://ac.jobdu.com/problem.php?pid=1208
詳細(xì)鏈接:https://github.com/zpfbuaa/JobduInCPlusPlus
參考代碼:
// // 1208 10進(jìn)制 VS 2進(jìn)制.cpp // Jobdu // // Created by PengFei_Zheng on 17/04/2017. // Copyright ? 2017 PengFei_Zheng. All rights reserved. // #include <stdio.h> #include <iostream> #include <algorithm> #include <string.h> #include <cmath> #define MAX_SIZE 10010 #define FROM 10 #define TO 2using namespace std;int main(){char from[MAX_SIZE];while(scanf("%s",from)!=EOF){int len = (int)strlen(from);int size = 0;char to[MAX_SIZE];//逆序保存十進(jìn)制數(shù)對(duì)應(yīng)的二進(jìn)制,正好是題目需要的逆置二進(jìn)制int ans[MAX_SIZE];//保存最終計(jì)算結(jié)果while(true){//FROM 進(jìn)制轉(zhuǎn)為 TO 進(jìn)制int i = 0;while(from[i]=='0' && i < len) i++;if(i == len) break;int remain = 0;for(; i < len ; i++){int tmp = from[i] - '0' + remain * FROM;from[i] = tmp/TO+'0';remain = tmp%TO;}to[size++] = remain+'0';} // cout<<to<<endl;int length = 1;ans[0] = 0;for(int i = 0; i < size ; i++){//1011 --> (((0*2+1)*2+0)*2+1)*2+1int carry = to[i] - '0';for(int j = 0 ; j < length ; j++){if(j==0)ans[j] = ans[j] * TO + carry;elseans[j] = ans[j] * TO;}for(int j = 0 ; j < length ; j++){if(j == length - 1 && ans[j] >=10){ans[j] = ans[j]%10;ans[++j] = 1;length++;}else if (ans[j]>=10){ans[j] = ans[j]%10;ans[j+1]++;}}}for(int i = length - 1 ; i >= 0 ; i--){printf("%d",ans[i]);}printf("\n");}return 0; }/**************************************************************Problem: 1208User: zpfbuaaLanguage: C++Result: AcceptedTime:40 msMemory:1520 kb ****************************************************************/?
轉(zhuǎn)載于:https://www.cnblogs.com/zpfbuaa/p/6721459.html
總結(jié)
以上是生活随笔為你收集整理的题目1208:10进制 VS 2进制(进制转换以及大数保存问题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Lis(bzoj 3532)
- 下一篇: ADB 无线连接设备