九度 oj 題目1208:10進位制 VS 2進位制
參考了
根據參考1有
#include <cstdio> #include <cstring> #define MAXN 4000 int main(){ int to[MAXN]; int from[MAXN]; char str[1000]; while(scanf("%s",str) !=EOF ){ int len = (int) strlen(str); for (int i = 0; i < len; ++i) { from[i] = str[i] - '0'; } int toLen = 0; while(true){ int i = 0; while(i<len&&from[i] == 0) i++; if(i==len) break; int remainder = 0; for (; i < len; i++) { int temp = remainder*10+from[i]; from[i] = temp/2; remainder = temp%2; } to[toLen++] = remainder; } if(toLen == 0){ printf("0\n"); }else{ int newLen = 1; memset(from,0,sizeof(from) ); for (int i = 0; i < toLen; ++i) { for (int j = 0; j< newLen; ++j) { from[j] *= 2; } if(to[i]) from[0]+=to[i]; int c = 0; for (int j = 0; j < newLen; ++j) { from[j] += c; if(from[j] >=10){ c = from[j]/10; from[j] %=10; }else{ c = 0; } } while(c){ from[newLen++] = c%10; c /=10; } } for (int i = newLen-1; i >=0; i--) { printf("%c",from[i]+'0'); } printf("\n"); } } }
根據參考2有:
#include <cstdio> #include <cstring> #define MAXN 4000 int main(){ int to[MAXN]; int from[MAXN]; char str[1000]; while(scanf("%s",str) !=EOF ){ int len = (int) strlen(str); for (int i = 0; i < len; ++i) { from[i] = str[i] - '0'; } int toLen = 0; while(true){ int i = 0; while(i<len&&from[i] == 0) i++; if(i==len) break; int remainder = 0; for (; i < len; i++) { int temp = remainder*10+from[i]; from[i] = temp/2; remainder = temp%2; } to[toLen++] = remainder; } if(toLen == 0){ printf("0\n"); }else{ int newLen = 0; while(true){ int i = 0; while(i<toLen && to[i] == 0) i++; if(i == toLen) break; int remainder = 0; for(;i<toLen;i++){ int temp = remainder*2 + to[i]; to[i] = temp/10; remainder = temp%10; } from[newLen++] = remainder; } for (int i = newLen-1; i >=0; --i) { printf("%c",from[i]+'0'); } printf("\n"); } } }
我覺得由參考2得到的方法更好,因為統一。
相關推薦
九度 oj 題目1208:10進位制 VS 2進位制
參考了 根據參考1有 #include <cstdio> #include <cstring> #define MAXN 4000 int main(){ int to[MAXN]; int from[MAXN];
九度OJ 題目1204:農夫、羊、菜和狼的故事
pla pan wol 題目 r+ ear play struct tab 思路:廣度 優先 記錄路徑長度 但是題目的意思好像是要記錄具體路徑 下次再搞吧 題目描述: 有一個農夫帶一只羊、一筐菜和一只狼過河.果沒有農夫看管,則狼要吃羊,羊要吃菜.但是船很小,只
九度OJ-題目1009:二叉搜索樹
提交 二叉排序樹 軟件 amp cpp creat .com xheditor ear 題目1009:二叉搜索樹 從如今開始打算重新啟動刷題征程。程序猿的人生不須要解釋! 這次撇開poj hoj等難度較大的oj系統,從九度入手(已經非常長時間沒寫過代碼
九度OJ-題目1009:二叉搜尋樹
題目1009:二叉搜尋樹 從現在開始打算重啟刷題征程。程式設計師的人生不需要解釋! 這次撇開poj hoj等難度較大的oj系統,從九度入手(已經很長時間沒寫過程式碼了),主要先“叫醒” 沉睡依舊的大腦。唉~真的很長時間沒寫部落格,沒寫程式碼了,只能加油吧!
九度OJ—題目1089:數字反轉
題目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,現在又任意兩個正整數,問他們兩個數反轉的和是否等於兩個數的和的反轉。 輸入: 第一行一個正整數表示測試資料的個數n。 只有n行,每行兩個正整數a和b(0<a,b<=10000)。 輸出
九度OJ 題目1014:排名
題目描述: 今天的上機考試雖然有實時的Ranklist,但上面的排名只是根據完成的題數排序,沒有考慮每題的分值,所以並不是最後的排名。給定錄取分數線,請你寫程式找出最後通過分數線的考生,並將他們的成績按降序列印。 輸入: 測試輸入包含若干場考試的資訊。每場
九度OJ題目1201:二叉排序樹
紀念一下終於在二叉樹上的程式碼準確率,但還是在給root分配空間的時候忘記要寫了 悲劇 還沒看到提示要考慮忽略重複元素,這個好解決 題目描述: 輸入一系列整數,建立二叉排序數,並進行前
九度OJ-題目1521:二叉樹的映象
題目連結地址: 題目描述: 輸入一個二叉樹,輸出其映象。 輸入: 輸入可能包含多個測試樣例,輸入以EOF結束。 對於每個測試案例,輸入的第一行為一個整數n(0<=n<=1000,n代表將要輸入的二叉樹節點的個數(節點從1開始編號)。接下來一行有n個數字,
九度OJ-題目1019:簡單計算器
題目描述: 讀入一個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。 輸入: 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用一個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果
九度OJ-題目1214:醜數
題目連結地址: 題目描述:把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 輸入:輸入包括一個整數N(1<=N<=1500)。 輸
九度OJ題目1047:素數判定
時間限制:1 秒 記憶體限制:32 兆 特殊判題:否 題目描述: 給定一個數n,要求判斷其是否為素數(0,1,負數都是非素數)。 輸入: 測試資料有多組,每組輸入一個數n。 輸出: 對於每組輸入,若是素數則輸出yes,否則輸入no。 樣例輸入: 13 樣例輸出: yes #include
九度 oj 題目1008:最短路徑問題
這道題告訴我們 INT_MAX, 慎用,dijkstra 有時加溢位了,你都不知道 #include <cstdio> //#include <climits> #include <algorithm> using namespace
九度 OJ 題目1008:最短路徑問題 (Dijstra 演算法)
題目描述: 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。 輸入: 輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為
九度OJ 題目1126:列印極值點下標
一.題目描述: 在一個整數陣列上,對於下標為i的整數,如果它大於所有它相鄰的整數, 或者小於所有它相鄰的整數,則稱為該整數為一個極值點,極值點的下標就是i。 輸入: 每個案例的輸入如下: 有2×n+1行輸入:第一行是要處理的陣列的個數n; 對其餘2×n行,第一
九度OJ-題目1163:素數
題目描述: 輸入一個整數n(2<=n<=10000),要求輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數,如果沒有則輸出-1。 輸入: 輸入有多組資料。 每組一行,輸入n。 輸出: 輸出所有從1到這個整數之間(不包
九度OJ—題目1067:n的階乘
題目描述: 輸入一個整數n,輸出n的階乘 輸入: 一個整數n(1<=n<=20) 輸出: n的階乘 樣例輸入: 3 樣例輸出: 6 #include <stdio.h> #include <string.h> #include <stdlib.h>
九度OJ-題目1509:樹中兩個結點的最低公共祖先
題目連結地址: 題目描述:給定一棵樹,同時給出樹中的兩個結點,求它們的最低公共祖先。 輸入:輸入可能包含多個測試樣例。對於每個測試案例,輸入的第一行為一個數n(0<n<1000),代表測試樣例的個數。其中每個測試樣例包括兩行,第一行為一個二叉樹的先序遍歷序列
九度OJ 題目1003:A+B
一.題目描述: 給定兩個整數A和B,其表示形式是:從個位開始,每三位數用逗號","隔開。 現在請計算A+B的結果,並以正常形式輸出。 輸入: 輸入包含多組資料資料,每組資料佔一行,由兩個整數A和B組成(-10^9 < A,B < 10^9)。 輸出: 請
九度OJ題目1081:遞推數列解題報告
題目分析1:一個很顯然的想法是遞推計算這k+1個數對10000的模,實現如下:原始碼1(TLE)#include <stdio.h>#include <stdlib.h>#define MOD 10000int main() { int a0, a1, p, q, k;
九度OJ-題目1508:把字串轉換成整數
題目連結地址: 題目描述:將一個字串轉換成一個整數,要求不能使用字串轉換整數的庫函式。 輸入:輸入可能包含多個測試樣例。對於每個測試案例,輸入為一個合法或者非法的字串,代表一個整數n(1<= n<=10000000)。 輸出:對應每個測試案例,若輸入為一個合