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

Posted 木剑配酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换二进制数(这是一道竞赛形式的题目)。相关的知识,希望对你有一定的参考价值。

1. 题目介绍


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

时限:3s输人文件: change.in

 

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

 

2. 代码


 

 1 #include <iostream>
 2 #include <fstream>
 3 #include <sstream>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     fstream fin("abc.txt");   //打开文件流
10     for(string s;getline(fin,s);){   //每次读取一行到字符串s
11         __int64 ans =0;
12         if(s =="-1"){    //判断是不是结尾
13             break;
14         }
15         for(int i=0;i<s.length();i++){
16             ans =(ans<<1)+s[i]-0;  //从最高位开始是每次左移1位,相当于乘以2
17         }
18         cout<<ans<<endl;
19     }
20 }

 

以上是关于转换二进制数(这是一道竞赛形式的题目)。的主要内容,如果未能解决你的问题,请参考以下文章

Java每日一道算法--请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数

每周一道算法题009:找二进制对称的日期

负进制的转换

每周一道算法题001:回文数

算法竞赛入门码蹄集新手村600题(MT1301-1350)

[洛谷P1017] 进制转换