C++ 数字 技术教程文章

《剑指offer刷题笔记》10、 旋转数组的最小数字 【c++详细题解】【代码】【图】

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 3,4,5,1,2{3,4,5,1,2}3,4,5,1,2为 1,2,3,4,5{1,2,3,4,5}1,2,3,4,5 的一个旋转,该数组的最小值为 111。 数组可能包含重复项。 注意:数组内所含元素非负,若数组大小为 000,请返回 ?1?1?1。 样例 输入:nums=[2,2,2,0,1]输出:0思路1 (遍历)O(n)O(n)O(n) 原来的数组是一个升序的数组,...

《剑指offer刷题笔记》 2、不修改数组找出重复的数字 【c++详细题解】【代码】【图】

题目 给定一个长度为 n+1n+1n+1 的数组nums,数组中所有的数均在 1~n1~n1~n 的范围内,其中 n≥1n≥1n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。思考题:如果只能使用 O(1)O(1)O(1)的额外空间,该怎么做呢? 思路 (分治,抽屉原理) O(nlogn)O(nlogn)O(nlogn) 这道题目主要应用了抽屉原理和分治的思想。抽屉原理:n+1 个苹果放在 n 个抽屉里,那么至...

【蓝桥杯】真题训练 2015年C++A组 题3 奇妙的数字【代码】【图】

奇妙的数字小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容。答案:69 题目解析 思路是这样的,在一定区间内枚举所有的数,对这些数进行判断。计算出他们的平方以及了立方之后,将这两个值转成字符串,然后放到set里面去检查是不是每个数字都是出现了一次,这里用到set能够很好的帮助检查是否有重复。最后判断set的长度是不...

剑指 Offer 56 - I. 数组中数字出现的次数(C++) 分组异或【代码】【图】

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1]示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2]限制: 2 <= nums.length <= 10000 分组异或 思路 让我们先来考虑一个比较简单的问题: 如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数...

C++ 数字与字符串的相互转换的几种方法【代码】【图】

平时在刷题的时候总是会遇到数字与字符串怎么转换的问题,我们要是用一般的方法。 字符串变成数字的常规套路 秦九昭算法 res=res*进制+每一位的数字(从高位向低位) string a; int res=0; for(int i=0;i<a.length();i++) res=res*10+a[i]-'0';数字变字符串。 这是把数字19234变字符串的方法 #include<iostream> #include<algorithm>using namespace std;int main(void) {int s=19234;string a;while(s){a+=s%10+'0';s/=10;}revers...

C++带逗号分隔符的字符串转数字【代码】

/* 将带有逗号分隔符的字符串数字转换为对应数字 对于诸如"1a2b3c",返回0 ok标识是否转换成功 */ long str2num(const char* str,bool& ok) {long result=0;int t=1;ok=true;const char* pstr=str;if(*pstr==-){t=-t;pstr++;}while(*pstr!=\0){if(isdigit(*pstr)){result*=10;result+=*pstr-0;}else{if(*pstr!=,){ok=false;return 0;}}pstr++;}return t*result; }

【LeetCode】C++ :简单题 - 字符串 788. 旋转数字【代码】

788. 旋转数字 难度简单88 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方(在这种情况下,它们以不同的方向旋转,换句话说,2 和 5 互为镜像);6 和 9 同理,除了这些以外其他的数字旋转以后都不再是...

C/C++ 数字常量的前缀和与后缀【代码】

C/C++中,我们经常会用到诸如0x100、100、0b1101这类的数字常量,这里的0x 0b就是数字常量的前缀,分别表示此数字是十六进制和二进制。100 不加任何前缀,表示十进制数。 我们有时候也会见到一些诸如 0x1FFFFUL、0x1FFFFULL 、0x1FFFFLL、1.8F之类的数字后缀,这里的UL表示unsigned long,ULL表示unsigned long long,LL 表示signed long long,F表示Float浮点数。也可以用数值后面加H或B来表示十六进制和二进制。 数值进制的表示...

洛谷 P1553 数字反转(升级版) 题解 (字符串C/C++)【代码】

主要就是两种处理方法,整数部分和小数部分,分数和百分数都可归结为整数部分 整数部分从后往前找找到第一个不为0的地方i,然后将子串 0~i 转置小数部分从前往后找找到第一个不为0的地方j,然后将子串转置具体请看代码和注释 //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> #include <cctype> #define inf 0x3f3f3f3f #define eps 1e-6 usi...

C++罗马数字转整数【代码】

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M;分别对应数值1,5,10,50,100,500,1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规...

13. 罗马数字转整数 - 力扣(LeetCode)- C++【代码】【图】

最近在刷LeetCode题目,不定期分享一些解法。 本题的题目描述如下: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符数值I1V5X10L50C100D500M1000 例如,罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 ...

PAT-乙1019 数字黑洞 (20分)C++【代码】

题目 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 ... ...现给定任意 4 位正整数,请编...

LeetCode 1342. 将数字变成 0 的操作次数 双百效率 C/C++描述【代码】【图】

LeetCode 1342. 将数字变成 0 的操作次数 双百效率 C/C++描述??大家好,我叫亓官劼(q guān ji ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客题目 难度 简单 给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把...

字符串与数字的转换(C++)【代码】

一、用streanstream(c++的) 数据多的时候可能有点慢,不过很好用 1、 string—>数字(int、float、double)string str = "123";int num;stringstream ss;ss << str;ss >> num;cout << num << endl;2、数字—>stringint num = 32.123;string str;stringstream ss;ss << num;ss >> str; //cout << ss.str() endl;一样的效果cout << str;二、用sprintf()和sscanf()(c语言的) 1、 char类型的字符串—>数字char str[]="123456";int...

C/C++输出字符串中数字个数【代码】

C输出 #include<stdio.h> #include<string.h> int main() {char a[100];unsigned int i,count=0;gets(a);for(i=0;i<strlen(a);i++){if(a[i]>=48&&a[i]<=57)//if(a[i]>='0'&&a[i]<='9')count++;}printf("%d",count); }C++输出 #include<iostream> #include<string> using namespace std; int main() {string str;getline(cin,str);int count=0;for(int i=0;i<str.length();i++){if(str.at(i)>=48&&str.at(i)<=57){count++;}}cout<<c...

C++关于srand函数使用时间作为种子仍然得到相同数字

例如上面所示,将srand()函数放在for循环里面,每次rand()生成的随机数都是一样的,这并是因为计算机运行很快,造成每次time产生的种子都是一样的(time的时间精度较低,只有55ms),所以得到的随机数也是一样的,所以要把srand()放在循环外面.作者:myleosu 链接:https://www.jianshu.com/p/1fd47704d8af 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。点赞 收藏分享文章举报BetterEth...

一款简单的C++猜数字游戏(新手必学)【图】

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者:1只小弛 废话不多说,直接上代码! #include<bits/stdc++.h> using namespace std; int main() {srand(time(0));int i,k=0,m,n,x; char ch;cout<<"您共想玩__关?"<<endl;cin>>x;while(k<=x-1){k++;cout<<endl<<"第"<<k<<"关:"<<"请猜一个"<<k<<"位数。"<<endl<<endl;m=rand()%9+1;for(i=1;i<=k-1;...

信息学奥赛C++语言: 与指定数字相同的数的个数【代码】

【题目描述】 输出一个整数序列中与指定数字相同的数的个数。 【输入】 输入包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数,整数之间以一个空格分开; 第三行包含一个整数,为指定的数字m。 【输出】 输出为N个数中与m相同的数的个数。 【输入样例】 3 2 3 2 2 【输出样例】 2 代码 #include <cstdio> using namespace std; int n,a[200],m,s=0; int main() {scanf("%d",&n); for(int i=0;i<n;i++) ...

【蓝桥杯2015_C++】t3:奇妙的数字【代码】

题意:一个数字的平方和立方刚好把0~9的10个数字每个用且只用了一次,问这个数字是多少。 题目不难,看到的方法觉得挺巧妙的,用了set不会加入重复元素的特点,把数的平方和立方转成字符串后拼接,按字符放进set中,若拼接后的字符串长度和set中元素个数都为10,说明刚好把0~9这10个数字用且只用了一次。 代码贴一下: 1 #include <iostream>2 #include <sstream>3 #include <set>4 using namespace std;5 6 string i2s(int i){7 ...