首页 > 试题广场 >

转换二进制数(这是一道竟赛形式的题目)。

[问答题]
转换二进制数(这是一道竟赛形式的题目)。
时限: 3s输入文件: change.in
一串串太多太长的二进制数真是枯燥乏味, 难怪小明看着看着就看花眼了; 小亮看着看着就睡着了; 小晶看着看着就恐慌起来了, 仿佛自己变成了机器人, 原本丰富多彩的世界一下子成了 0和1的汪洋大海。他们一致要求将这些二进制数转换成十进制数,只有这样,心里才安稳,才痛快,睡觉才合得上眼。
这项工作自然就落到你的手里了, 因为早就听说你是处理二进制数的高手了, 一点也不怀疑你会一下子想出十七八种转换的方法, 而且其中还有几种方法还很经典呢, 这儿真的就是你用武的好地方, 请下手吧 。
输入说明
有3000个二进制数, 最长的不过64位, 在文件中以数字串的形式存放, 每行只放一 个数。如果是-1,那就表示输入结束。
输出说明
每一个二进制数对应一个十进制数输出。每个输出都要換行。
样板输入
01010010000111110111110110110011001011111110011111100000001
00000000000000001111111110101010010101010010100000001111100
100001
-1

样板输出

184924582623264513
8784594944124

33



推荐
//-----------------------------------
//EX0408.cpp
//二进制数转换成十进制数,位操作版
//-----------------------------------
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//-----------------------------------
int main() {
  ifstream cin("change.in");
  for(char s[65]; cin>>s && s[0]!='-';)
  {
    usigned long long x = 0, tmp=1;
    for(int i=strlen(s); i--; tmp<<=1)
      if(s[i]=='1')
        x  |= tmp;
     cout<<x<<"\n";
   }
}//----------------------------------

发表于 2018-05-07 20:35:27 回复(0)