十进制

【PTA】字符串转换成十进制整数 (15分) #C语言

回眸只為那壹抹淺笑 提交于 2020-03-10 09:41:14
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 输入格式: 输入在一行中给出一个以#结束的非空字符串。 输出格式: 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。 输入样例: +-P-xf4+-1!# 输出样例: -3905 我的解法: #include<stdio.h> //挺麻烦的,但自认为是比较工整的!已发布CSDN #include<string.h> #include<math.h> void Remove_InvalidSympol(char a[],int n){ //去除无效字符 char valid_sympol[]={'-','0','1','2','3','4','5','6','7','8','9','a','A','b','B','c','C','d','D','e','E','f','F'}; int len_right_symbol=strlen(valid_sympol); int cnt=0; char temp[1000]; for(int i=0;i<n;i++){ int isinright=0; for(int j=0;j<len_right_symbol;j++){ if

C语言打印时格式总结

元气小坏坏 提交于 2020-03-09 16:50:16
C语言中%X的意思是以十六进制数形式输出整数,类似%x的输出格式还有: 1.%c:单个字符 2.%d:十进制整数 3.%f :十进制浮点数 4.%o:八进制数 %s :字符串 6.%u:无符号十进制数 7.%%:输出百分号% 引用:https://zhidao.baidu.com/question/344067897.html 来源: CSDN 作者: qq_29566629 链接: https://blog.csdn.net/qq_29566629/article/details/104753100

CF - 55D (Beautiful numbers)

穿精又带淫゛_ 提交于 2020-03-06 19:55:38
题意:给定 l 和 r,求区间 [l,r] 内的 Beautiful number 的数量,Beautiful number 的定义是它能被它十进制上任意一位不为零的数整除; 分析:一个数能被它十进制上任意一位不为零的数整除,换种说法就是这个数能被它十进制上所有不为零的数的最小公倍数整除,而2~9的最小公倍数为2520,这样就可以用数位DP写了,我们初设dp[i][j][z]表示走到 第 i 位,当前数模上2520为 j,十进制出现的数的最小公倍数为 z 的情况下满足条件的数的数量; 这样可行性是必然的,但是可以看到数组得开到dp[20][2520][2520],那么空间太大,需要进一步优化; 考虑一下第三维空间,其实大部分空间都没有用到,因为它存的是2~9中某些数的最小公倍数,所以它保存的永远只能是2520的因数,那2520的因数只有不到50个,所以我们可以hash一下第三维,这样数组就只用开成 dp[20][2520][50]; 代码: #include<map> #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int MOD = 2520; typedef long long ll; ll dp[20][2520][50]; int digit[20]; map

【dp】矩阵乘法/数乘

元气小坏坏 提交于 2020-03-06 18:34:53
最大K乘积问题 « 问题描述 设I是一个n位十进制整数。如果将I划分为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。 例如十进制整数 1234 划分为 3 段可有如下情形: 1 × 2 × 34 = 68 1 × 23 × 4 = 92 12 × 3 × 4 = 144 « 编程任务 对于给定的I 和k,编程计算I 的最大k 乘积。 « 数据输入 输入的第1 行中有2个正整数n和k。正整数n是序列的长度;正整数k是分割的段数。接下来的一行中是一个n位十进制整数。(n<=10) « 结果输出ss 计算出的最大k乘积。 输入文件示例 输出文件示例 input.txt output.txt 3 2 312 62 « 实现提示 参考矩阵连乘问题。 #include <iostream> #include <cstdio> #include <cmath> using namespace std; /* void copyMatrixchain(){ int i,r,j,k; memset(m,0,sizeof(m)); memset(s,0,sizeof(s)); for(r=2;r<=n;r++) //跨度从2-n { for(i=1;i<=n-r+1;i++) //遍历 { j=i+r-1; m[i][j]=m[i+1

格式说明符

只谈情不闲聊 提交于 2020-03-05 15:21:59
格式转换说明符printf() / scanf()                   表一 printf()的转换说明符 转换说明 输 出 %a 浮点数、十六进制数字和p-记数法 (C99) %A 浮点数、十六进制数字和P-记数法 (C99) %c 一个字符 %d 有符号十进制整数 %e 浮点数、e-记数法 %E 浮点数、E-记数法 %f 浮点数,十进制记数法 %g 根据数值不同自动选择%f或者%e。%e格式在指数小于-4或者大于等于精度时使用 %G 根据数值不同自动选择%f或者%E。%E格式在指数小于-4或者大于等于精度时使用 %i 有符号十进制整数 (与%d相同) %o 无符号八进制整数 %p 指针(就是指地址) %s 字符串 %u 无符号十进制整数 %x 使用十六进制数字0f 的无符号十六进制整数 %X 使用十六进制数字0F的无符号十六进制整数 %% 打印一个百分号                   表二 printf() 修饰符 修饰符 意 义 标志 五种标志 (-、+、空格、# 和0) 都将在表三中描述,可以使用零个或多个标志 digit(s) 字段宽度的最小值。如果该字段不能容纳要打印的数或者字符串,系统会使用更宽的字段。示例:“%4d” .digit(s) 精度。对于%e、%E和%f转换,是将要在小数点的右边打印的数字的位数。对于%g和%G转换

[LeetCode] 847. Shortest Path Visiting All Nodes 访问所有结点的最短路径

扶醉桌前 提交于 2020-03-05 05:17:35
An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1 ) is given as graph . graph.length = N , and j != i is in the list graph[i] exactly once, if and only if nodes i and j are connected. Return the length of the shortest path that visits every node. You may start and stop at any node, you may revisit nodes multiple times, and you may reuse edges. Example 1: Input: [[1,2,3],[0],[0],[0]] Output: 4 Explanation: One possible path is [1,0,2,0,3] Example 2: Input: [[1],[0,2,4],[1,3,4],[2],[1,2]] Output: 4 Explanation: One possible path is [0,1,4,2,3] Note: 1 <= graph.length <= 12 0 <

子网掩码划分计算方法及实例

左心房为你撑大大i 提交于 2020-02-29 15:34:32
一、明确概念   在介绍十进制算法前我们先要明确一些概念。   类范围: IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里,X在1~126范围内称为A类地址;X在128~191范围内称为B类地址;X在192~223范围内称为C类地址。比如10.202.52.130,因为X为10,在1~126范围内,所以称为A类地址。   类默认子网掩码: A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0。当我们要划分子网用到子网掩码M时,类子网掩码的格式如下:A类为 255.M.0.0,B类为 255.255.M.0,C类为255.255.255.M。M是相应的子网掩码,比如255.255.255.240。十进制计算基数是256(下面,我们所有的十进制计算都要用256来进行)。 二、变量说明    1.Subnet_block指可分配子网块大小,表示在某一子网掩码下子网的块数。    2.Subnet_num是可分配子网数,指可分配子网块中要剔除首、尾两块,是某一子网掩码下可分配的实际子网数量。Subnet_num =Subnet_block-2。    3.IP_block指每个子网可分配的IP地址块大小。    4.IP_num指每个子网实际可分配的IP地址数。因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址)

lintcode算法题之147-水仙花数

廉价感情. 提交于 2020-02-29 03:48:01
47. 水仙花数 水仙花数的定义是,这个数等于他每一位数上的幂次之和 见维基百科的定义 比如一个3位的十进制整数 153 就是一个水仙花数。因为 153 = 13 + 53 + 33。 而一个4位的十进制数 1634 也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。 给出 n ,找到所有的n位十进制水仙花数。 样例 样例 1: 输入: 1 输出: [0,1,2,3,4,5,6,7,8,9] 样例 2: 输入: 2 输出: [] 样例解释: 没有2位数的水仙花数。 代码区: public class Solution { /** * username:softstarhhy * @param n: The number of digits * @return: All narcissistic numbers with n digits */ public List<Integer> getNarcissisticNumbers(int n) { // write your code here List list=new ArrayList<Integer>(); int start = (int)Math.pow(10, n-1); int end = (int)Math.pow(10, n); /* for(int s=0;s<n;s++) { n=

Linux 命令 - mknod

↘锁芯ラ 提交于 2020-02-28 14:40:07
mknod 创建块设备或者字符设备文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 mknod [选项] 设备名 设备类型 主设备号 次设备号 2、选项参数列表 选项 说明 --version 显示命令版本信息 --help 显示帮助信息 -m 或 --mode=MODE 设置权限 -Z 或 --context=CTX 设置SELinux的安全上下文 设备类型 b,块设备;c,字符设备;u,没有缓冲的字符设备;p,fifo设备 设备号 只能是十进制和八进制,如果是0x开头,那么还是十进制。对于b、c、u设备,必须给出设备号,对于p设备,必须忽略设备号 当类型为b、c或u时,必须同时指定主设备号和次设备号;当类型为p时,必须省略它们。如果主设备号或次设备号以0x或0x开头,则解释为十六进制;否则,如果以0开头为八进制,其他为十进制。 3、实例 1)创建块设备文件 [root@localhost ~]# mknod /dev/sdb4 b 1 1 //创建一个设备 [root@localhost weijie]# ls -l /dev/sdb4 brw-r--r-- 1 root root 1, 1 9月 7 08:21 /dev/sdb4 2)创建字符设备文件 [root@localhost ~]#