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

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 }

原文地址:https://www.cnblogs.com/Triomphe/p/9385347.html

时间: 2024-12-13 14:09:12

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

javascript将毫秒转换成hh:mm:ss的形式

function formatMilliseconds(value) { var second = parseInt(value) / 1000; // second var minute = 0; // minute var hour = 0; // hour if(second > 60) { minute = parseInt(second / 60); second = parseInt(second % 60); if(minute > 60) { hour = parseInt(m

约瑟夫环问题,一道经典的数据结构题目

问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数.求胜利者的编号. 一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并不是一个很好的解法. 在大部分情况下,我们仅仅需要知道最后那个人的编号,而不是要来模拟一个这样的过程,在这种情况下,可以考虑是否存在着一种数学公式能够直接求出最后那个人的编号. 我们知道第一个人(编号

BitArray类的使用--(转换二进制数的内部实现过程)

BitArray类用来处理位集合. 它和ArrayList十分类似,可以动态调整大小,可以在需要的时候添加二进制位而不用担心数组越界的问题.(所以本质它也是集合里套一个数组,可能是线性数组) 什么是位集合? ----位集合是可以用来有效表示Boolean值的集合.注意:表示True/False的集合,不是0.1集合. 另: 对常规数的二进制的显示或存储(如1): 0 0 0 0 0 0 0 1 而对于在BitArray里的存储,它是如下格式: True False False False Fal

三种方法教你急速转换二进制数(0~255)

教你快速将0~255十进制数转换为二进制 1.加减法转换法(个人认为需要记得的比较多) 数制转换的基础(前提)是了解什么是二进制.十进制.十六进制的概念.简单来说是逢基数(2,10,16)进位.首先我们要知道255的二进制数是1111 1111(B),所以在0-255的范围内所对应的二进制数都不可能超过8位. 下面用一幅图来演示计算过程. 2.乘减法转换法(熟记内容少一些) 我们知道16进制与二进制可以相互转换的,对应关系是16进制的一位对应二进制的4位,如十进制数255,其二进制数数 :111

JavaScript编码转换之gb2312转unicode -- &amp;#X形式

http://www.cnblogs.com/meil/archive/2007/01/31/635936.html JavaScript编码转换之gb2312转unicode 1. <html><head><title>gb2312 unicode转换工具</title><div align=center><center><table border=0 cellpadding=0 cellspacing=0 style=&qu

Go语言之读取yaml配置文件,转换成struct结构,json形式输出

1.例子1 1.1.yaml文件内容如下: host: localhost:3306 user: root pwd: 123456 dbname: test 1.2.代码如下: //将yaml文件,转换成对象,再转换成json格式输出 package main import ( "encoding/json" "fmt" "gopkg.in/yaml.v2" "io/ioutil" ) //定义conf类型 //类型里的属性,

php 图片转换二进制数

$image = "1.jpg"; //图片地址 $fp = fopen($image, 'rb'); $content = fread($fp, filesize($image)); //二进制数据

一道简单的动态规划题目——House Robber

一.题目 House Robber(一道Leetcode上的关于动态规划的简单题目)具体描述如下: There is a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent hous

还是一道旋转数组的题目

 /*  关于这 数组偏移  1 2 3 4 5   3---->>   3 4 5 1 2  n =5  返回 2  */   #include <bits/stdc++.h> using namespace std;  int a[]={1,2,3,4,5};  int n=5;  int count=3; int fun(int n,int a[],int count,int len)//不给数组长度真的不好做 ,JAVA是能由数组直接拿 {      int b[2*len