1. 程式人生 > >題目1138:進位制轉換 (大資料10進位制到2進位制)

題目1138:進位制轉換 (大資料10進位制到2進位制)

題目描述:

將一個長度最多為30位數字的十進位制非負整數轉換為二進位制數輸出。

輸入:

多組資料,每行為一個長度不超過30位的十進位制非負整數。
(注意是10進位制數字的個數可能有30個,而非30bits的整數)

輸出:

每行輸出對應的二進位制數。

樣例輸入:
0
1
3
8
樣例輸出:
0
1
11
1000

//思路:

  十進位制數位數超過30位,數太大。用字元陣列來存放。轉換為二進位制時,每一次陣列最後一位取餘存入新陣列,然後十進位制數從第一位開始,判斷當前是奇數還是偶數,奇數則下一位的進位位位10,偶數則為0,然後加上前一次求得的進位位(一開始設為0)再除以二,。

相當於連續除以二求餘

思路稍微有點繞,java有直接轉化為二進位制的演算法真是太爽了。

#include <stdio.h>


int main(){
	char n[40], buf[200];
	int num[40], len, i, len_str, c, tmp, j;
	while (scanf("%s", n) != EOF){
		for (len = 0; n[len]; len++){
			num[len] = n[len] - '0';
		}
		i = 0, len_str = 0;
		while (i < len){
			buf[len_str++] = num[len - 1] % 2 + '0';
			c = 0;
			for (j = i; j < len; j++){
				tmp = num[j];
				num[j] = (num[j] + c) / 2;
				if (tmp & 1){//二進位制位與運算,判斷tmp是否為奇數
					c = 10;
				}
				else
					c = 0;
			}
			if (num[i] == 0)
				i++;
		}
		for (int j = len_str - 1; j >= 0; j--){
			printf("%c", buf[j]);
		}
		printf("\n");
	}
	return 0;
}


相關推薦

題目1138轉換 資料102

題目描述: 將一個長度最多為30位數字的十進位制非負整數轉換為二進位制數輸出。 輸入: 多組資料,每行為一個長度不超過30位的十進位制非負整數。 (注意是10進位制數字的個數可能有30個,而非30bits的整數) 輸出: 每行輸出對應的二進位制數。 樣例輸入: 0

資料開發面試部分對yarn的理解資料開發面試

YARN是Hadoop2.0版本引進的資源管理系統,直接從MR1演化而來。  核心思想:將MR1中的JobTracker的資源管理和作業排程兩個功能分開,分別由ResourceManager和ApplicationMaster程序實現。 ResourceManager:負

Dask快速搭建分散式叢集資料0基礎可以理解,並使用!

轉載:  https://blog.csdn.net/a19990412/article/details/79510219常開心,解決了很久都沒有解決的問題使用的語言: Python3.5 分散式機器: windows7注意到,其實,通過這工具搭建分散式不需要管使用的電腦是什

機器學習——2資料金融風控的預測案例學習總結

大資料金融風控的預測案例 1)資料準備 a)離群點處理 總體上先對資料進行了解,做一些簡單統計,對連續性數值與字元型數值的處理; 離群點的處理: 首先,離群點的定義:是與其他大多數樣本的行為或特徵分佈不一致的那些點; 處理方式:方法1—首先統計每個樣

九度-題目1138轉換

i++ 十進制 ring str 進制數 ble for 進制 進制轉換 http://ac.jobdu.com/problem.php?pid=1138 題目描述: 將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。 輸入: 多組數據,每行為一個長度不超過

藍橋杯轉換java

package lanqiaobei; import java.util.HashMap; import java.util.Scanner; import java.util.Stack; /* 練習題:進位制轉換 輸入一個十進位制數 N,將它轉換成 R 進位制數輸出。在 10≤R≤16的情況

資料結構實驗之棧與佇列一轉換SDUT 2131

題目連結 題解: 特判一下n==0的時候。 #include <bits/stdc++.h> using namespace std; int a[1000]; int main() {

資料結構實驗之棧一轉換java實現

資料結構實驗之棧一:進位制轉換 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 輸入一個十進位制整數,將其轉換成對應

2~62任意轉換c++

rtmp end iostream 思路 [0 代碼 () objc blog 進制轉換的符號表為[0-9a-zA-Z],共61個字符,最大可表示62進制。 思路是原進制先轉換為10進制,再轉換到目標進制。 疑問:   對於負數,有小夥伴說可以直接將符號丟棄,按照整數

轉換c語言

#include <stdio.h> #include <stdlib.h> void change(int n) { if (n == 0) return; else { // change(n / 8);

1010 Radix - 轉換有坑

思路: 這題有坑啊 (1)z表示36並不意味著只到36進位制,最小2進位制,最大進位制=另一個數的值 (2)可能會超時,用二分 (3)用long long!在二分過程中會溢位,所以要特判,當溢位時說明書過大,right=mid-1 程式碼如下: #include<ios

任意轉換佇列實現儲存和輸出

#include <stdio.h> #include <stdlib.h> #define maxsize 1000000 **//定義佇列** typedef struct { char c[maxsize]; int top; }seqstack

各種轉換二,八,十,十六轉換詳解附程式碼

進位制轉換      原理 進位制轉換是人們利用符號來計數的方法。進位制轉換由一組數碼符號和兩個基本因素“基數”與“位權”構成。 基數是指,進位計數制中所採用的數碼(數制中用來表示“量”的符號)的個數。  位權是指,進位制中每一固定位置對應

ZZULIOJ.1112: 轉換函式專題

1112: 進位制轉換(函式專題) 題目描述 輸入一個十進位制整數n,輸出對應的二進位制整數。常用的轉換方法為“除2取餘,倒序排列”。將一個十進位制數除以2,得到餘數和商,將得到的商再除以2,依次類推,直到商等於0為止,倒取除得的餘數,即為所求的二進位制數。例如,把52換算成二進位制

演算法筆記 — 轉換大數運算-十進位制轉二進位制

  題目連結:http://www.codeup.cn/problem.php?cid=100000579&pid=2 題目描述 將一個長度最多為30位數字的十進位制非負整數轉換為二進位制數輸出。 輸入 多組資料,每行為一個長度不超過30位的十進位制非負整數

P1017 轉換 轉換

和平常的轉化差不多 加多一步 如果餘數 < 0, 那麼餘數減去除數(此時除數是負),商數加1  #include<cstdio> #define _for(i, a, b) fo

鏈棧實現轉換2-16

#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include <math.h> #de

轉換十進位制轉K,K轉十進位制,整數、小數

#include <iostream> #include <cstdio> using namespace std; int main() { int k,number;int

中石油新生第三次訓練賽 C題轉換奇葩解

題目描述 樂樂正在學進位制轉換,但他老是搞不清楚到底自己是否做對,請你編一程式實現兩種不同進位制之間的資料轉換,幫他檢驗。 輸入 共有三行,第一行是一個正整數,表示需要轉換的數的進位制n(2≤n≤16),第二行是一個n進位制數,若n>10則用大寫字母A~F表示數碼10~15

hdu2013轉換解題報告---資料結構

進位制轉換 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm