-
试题 基础练习 十六进制转十进制
2021-02-09 18:48:23从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 一、分析 有两种方法 第...试题 基础练习 十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535一、分析
有两种方法
第一种
直接使用%x输入然后使用%lld输出这种不推荐比较投机
第二种
定义一个字符数组用来存放输入的16进制数,再判断数组的ascll值若是在48-59之间则说明输入的16进制数是0-10只需-48便是对应的十进制数,否则需-55才是对应的十进制数,最后定义一个初始值为0的sum变量累加起来便是结果二、ac代码
1.引入库
代码如下(示例):
i#include<stdio.h> #include<string.h> #include<math.h> int main() { char a[100]; scanf("%s",a); long long int b=strlen(a),i,sum=0; for(i=0;i<b;i++) { if(a[i]>=48&&a[i]<=59) { sum+=(a[i]-48)*pow(16,b-i-1); } else { sum+=(a[i]-55)*pow(16,b-i-1); } } printf("%lld",sum); return 0; }
总结
16进制转换为10进制如果使用数学方法来算很简单,转换为c语言也是类似数组有多长就表示16进制数有多长,转换为10进制就是从最高位开始每一位的本身的本身-1次方累加便是对应的10进制数
-
poj1014 dividing(多重背包+二进制优化)
2012-09-24 17:00:29有1,2,3,4,5,6六种硬币,输入它们分别得个数,把这些硬币分成两半看是否能实现。 首先cnt%2==1,肯定是不能平分的。 用hdu coin那道题目一样,都是用多重背包+二进制转化的思想。具体参照上篇博客。 ...看到这个题我真是感慨万千,无数tlm,经过二进制优化后,居然来了个pe,原因是当cnt%2==1没有输出一个换行符。看来人品是太好了!
题目:
有1,2,3,4,5,6六种硬币,输入它们分别得个数,把这些硬币分成两半看是否能实现。
首先cnt%2==1,肯定是不能平分的。
用hdu coin那道题目一样,都是用多重背包+二进制转化的思想。具体参照上篇博客。
Description
Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles had the same value, because then they could just split the collection in half. But unfortunately, some of the marbles are larger, or more beautiful than others. So, Marsha and Bill start by assigning a value, a natural number between one and six, to each marble. Now they want to divide the marbles so that each of them gets the same total value.
Unfortunately, they realize that it might be impossible to divide the marbles in this way (even if the total value of all marbles is even). For example, if there are one marble of value 1, one of value 3 and two of value 4, then they cannot be split into sets of equal value. So, they ask you to write a program that checks whether there is a fair partition of the marbles.Input
Each line in the input describes one collection of marbles to be divided. The lines consist of six non-negative integers n1, n2, ..., n6, where ni is the number of marbles of value i. So, the example from above would be described by the input-line ``1 0 1 2 0 0''. The maximum total number of marbles will be 20000.
The last line of the input file will be ``0 0 0 0 0 0''; do not process this line.Output
For each colletcion, output ``Collection #k:'', where k is the number of the test case, and then either ``Can be divided.'' or ``Can't be divided.''.
Output a blank line after each test case.Sample Input
1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0Sample Output
Collection #1: Can't be divided. Collection #2: Can be divided.代码:
#include<iostream> using namespace std; int f[1200005]; int c[10]; int main() { int i,j,k,t=1,cnt,sum,mount; while(1) { cnt=0; for(i=1;i<=6;i++) { scanf("%d",&c[i]); cnt+=c[i]*i; } if(cnt==0) {break;} printf("Collection #%d:\n",t++); if(cnt%2) {printf("Can't be divided.\n");printf("\n");continue;} sum=cnt/2; memset(f,0,sizeof(f)); f[0]=1; for(i=1;i<=6;i++) { mount=c[i]; for(k=1;k<=mount;k<<=1) { for(j=cnt;j>=k*i;j--) f[j]+=f[j-k*i]; mount-=k; } if(mount) for(j=cnt;j>=mount*i;j--) f[j]+=f[j-mount*i]; } if(f[sum]) printf("Can be divided.\n"); else printf("Can't be divided.\n"); printf("\n"); } return 0; }
-
蓝桥杯 基础练习 十六进制转十进制
2018-01-29 22:45:43从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 解答: 1...问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入
FFFF
样例输出
65535
解答:
1、问题分析:进制转换问题是编程练习经常涉及到的一类题目。首先,这类题目个人总结有两种做法:
(1)位权法;
(2)二进制中转转换法
相对来说,位权法更直接高效,逻辑性比较强,而通过二进制转换这样一种途径更加简单,但是运算量大,而且代码长度很长,不利于理解,本人增加倾向于使用位权法来解决此类题目。
参考代码:
#include<iostream> //输入输出流头文件 #include<string.h> //字符串处理头文件 using namespace std; //申请命名空间 int main(){ char s[8]; //根据题目要求字符数量不能超过8位,因此定义一个长度为8的字符串数组 while(cin >> s){ //输入字符串内容 int len = strlen(s); //通过strlen获取输入字符串的长度 long long int m = 0,n = 16; //由于8位16进制数表示的范围超出了int所能够表示的范围,因此定义为long long类型 for(int i = 0;i < len;i++){ //通过分离0~9和A~F来计算转换后的十进制数 if(s[i] >= '0' && s[i] <= '9'){ m = m * n + (s[i] - '0'); } else{ m = m * n + (s[i] - 'A' + 10); } } cout << m; } return 0; }
核心代码:
通过循环控制和条件选择对字符串每一位进行转换后相加
以题中所给字符串为例:
最难理解的是else语句里面的语句“m = m * n + (s[i] - 'A' + 10);”
(s[i] - 'A' + 10)是什么?
(s[i] - 'A' + 10) 其实就是A、B、C、D、E、F 所对应的十进制数,只不过这里需要通过ACSLL码来转换一下而已。
前面的 m * n 叠加起来就是权值16 的次方。
-
不用+-*/实现两个数的相加。
2020-07-20 16:22:30,按位或|,按位异或^,两个数相加,若不涉及进位运算,则是两个数进行异或,两个数相加的进位其实是两个数想与&之后的二进制再左移<<一位,然后将这两步所得结果再进行相加,直到进位为0为止。实现如下: ...在计算机中,计算都是二进制下的运算,主要设计三种操作符,分别为按位与&,按位或|,按位异或^,两个数相加,若不涉及进位运算,则是两个数进行异或,两个数相加的进位其实是两个数想与&之后的二进制再左移<<一位,然后将这两步所得结果再进行相加,直到进位为0为止。实现如下:
class Solution { public: int Add(int num1, int num2) { while(num2!=0){ int res=num1^num2; num2=(num1&num2)<<1; num1=res; } return num1; } };
-
怎么判断一个数是由1 2 4 8 16 32 64 128 256 512 1024...这些数字任意几个相加,怎么算出是那几个相加?
2020-09-16 10:06:301:先把数字转位二进制 1 2 4 8 16 对应的分别是1 10 100 1000 10000 然后比如你要算7是分别有哪些组成,7 的二进制是111...那么匹配上面看出只有 前面两个数是1,然后映射到对应的数字就是4和8。说明12是由4个8组成 ... -
java5年-回头再补补基础-按位操作符
2016-08-13 15:08:49移位操作符且不管,今天复习一下按位操作符,以随随时翻阅操作对象: bit,整个基础类型中的单个bit,即‘二进制位’(即对参与运算的参数的每个二进制位分别进行比较操作); 类型:&、|、^、~ (与、或、异或、非... -
java 位操作符
2012-10-09 14:43:00位操作符有以下6种 & :按位“与”(AND);... 的作用是对运算符两侧以二进制表达的操作数按位分别进行“与”运算,而这一运算是以数中相同的位(bit)为单位的。操作的规则是:仅当两个操... -
java位操作符查漏补缺
2012-12-21 14:56:00位操作符有以下6种 & :按位“与”(AND);... 的作用是对运算符两侧以二进制表达的操作数按位分别进行“与”运算,而这一运算是以数中相同的位(bit)为单位的。操作的规则是:仅当两个操作... -
Java中的位运算符
2019-10-08 02:35:44在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>...作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。而这一运算是以数中同样的位(bit)为单位... -
Java 位运算符 深入理解
2015-07-21 21:48:44在Java中存在着这样一类操作符,是针对二进制进行操作的,它们分别是&、|、^、~、>>、>>几个位操作符,无论是初始值是按照何种进制,都会换算成二进制进行位 操作。接下来对这几种操作符进行一下简单的讲解。 &: ... -
按位的计算
2019-11-05 18:39:38当出现在代码中就是两个数之间的运算,其实运算法则比较简单,先将需要运算的数据 转换为二进制,将两数的每一位分别进行逻辑运算。`a=077;b=3;b=a&b;`此时b=3,当a转化 为二进制时a=00111111,b=00000011,... -
PHP基础教程 是一个比较有价值的PHP新手教程!
2010-04-24 18:52:44// 一个包含两个元素的数组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加数组元素的简单方法 // 现在$a[2]被赋值为"third" echo count($a); // 打印出3,因为该是... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:183.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ... -
Java_13_1_运算符_扩展之位运算符
2018-03-06 15:08:25在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>...作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。而这一运算是以数中同样的位(bit)为单位的。操作的... -
Java位运算符以及运算优先级
2019-02-14 15:46:05对运算符两侧以二进制表达的操作符按位分别进行'与'运算。 操作的规则是:仅当两个操作数都为1时。输出结果才为1。否则为0 例:12 & 5 = 1100 & 0101 = 0100 = 4 (2) 或| 对运算符两側以二进制... -
Java位运算符
2019-12-16 11:35:33它的作用是对运算符以二进制位表达的操作符按位分别进行“与”运算。这一运算是以数中同样的位(bit)为单位的。当且仅当两个操作数都是1时,输出结果才为1,否则为0。 2 的二进制为 0010 5 的二进制为 0101 则 2 &... -
C语言入门参考(二)
2017-08-17 21:09:40想一下,用机器语言来开发,我们得记住多少用0和1两个数字所组成的指令代码以及其代码涵义?显然,这是不合理的,这样的编程枯燥且繁琐费力,也容易出错。汇编语言应运而生,汇编语言用助记符代替机器指令,但助记符... -
Java位运算符深入理解
2018-04-04 08:41:10在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、&...作用是对运算符两側以二进制表达的操作符按位分别进行’与’运算。而这一运算是以数中同样的位(bit)为单位的... -
你必须知道的495个C语言问题.[美]Steve Summit(带详细书签).pdf 压缩版
2018-04-08 02:26:503.15 我要检查一个数是不是在另外两个数之间,为什么if(a )不行? 69 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 69 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9... -
你必须知道的495个C语言问题.pdf
2013-01-20 14:30:543.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9 * ... -
[你必须知道的495个C语言问题]人民邮电出版社.扫描版.pdf
2011-10-01 21:39:523.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9 * ... -
JVM-Class文件的结构
2020-08-26 15:35:39Class文件是一株以8个字节为单位的二进制流。各个数据项目严格按照顺序紧凑的排列在文件之中,中间没有任何的分隔符,当遇到占用的空间大于8个字节时,会按照高位在前的方式进行分割,分割单位还是8个字节。 Class... -
Java虚拟机-Class类文件的结构
2021-02-03 00:13:52Class文件是一组以8个字节为基础单位的二进制流,各个数据严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符。文件格式采用一宗类似于C语言结构体的伪结构来存储数据,这种伪结构只要两种数据类型:无符号...
-
实现 MySQL 读写分离的利器 mysql-proxy
-
3. 单行函数
-
架构的原则、范式及治理
-
SLAM导航机器人零基础实战系列-第6章_SLAM建图与自主避障导航.pdf
-
【图像分割】分水岭算法的图像分割【Matlab 307期】
-
PPT大神之路高清教程
-
LTU测试项目步骤
-
TortoiseGit 速度较慢 改用 openssh
-
SLAM导航机器人零基础实战系列-第5章_树莓派3开发环境搭建.pdf
-
2.简单查询&&限定查询&&查询排序
-
vue 第二天(常用指令及插值语法)
-
一天学完MySQL数据库
-
android studio4.2 没有offline mode的解决方案
-
基于集对可拓耦合算法的尾矿库安全综合评价_柯丽华.pdf
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
Python小游戏源码-音符跳跃皮卡丘游戏源码
-
Redis数据类型-03.docx
-
分享一段自己写的合并07Excel表格的代码
-
2009-2017软考中级网络工程师试题答案.zip