a034v2 - Binary to Decimal Conversion
題目描述
題目要求將輸入的二進位數字轉換為十進位數字。輸入為一個正整數,代表二進位數字,輸出則為其對應的十進位數字。
解題思路
程式碼使用迴圈迭代輸入的二進位數字的每一位。在每次迭代中,它提取最低位,將其乘以 10 的 i 次方(其中 i 是位數),然後將結果加到答案中。然後,它將二進位數字右移一位,以處理下一位。這個過程一直持續到二進位數字變為 0。
複雜度分析
- 時間複雜度: O(log(a)),其中 a 是輸入的二進位數。因為迴圈的次數與二進位數的位數成正比,而二進位數的位數與 log2(a) 成正比。
- 空間複雜度: O(1),程式碼只使用了幾個整數變數,空間使用不隨輸入大小變化。
程式碼
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int a,i;
while( cin >> a){
i =0;
long long ans=0;
while(a>0){
ans += a%2*pow(10,i);
a/=2;
i++;
}
cout << ans<<endl;
}
return 0;
}