王道机试C++第6章 数学问题和22年蓝桥杯省赛选择题Day34

6.1 进制转换

二进制数(十转二)

习题描述

大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。

输入描述:多行,每一行表示要求的数字

输出描述:输出共T行。每行输出求得的二进制串

代码表示:
#include <bits/stdc++.h>  
using namespace std;  int main() {  unsigned int n;  while (scanf("%u", &n) != EOF) {  vector<int>binary; // 使用vector<bool>来存储二进制位  while (n != 0) {  binary.push_back(n % 2);  n /= 2; //取走余数之后剩下的 }  for (int i = binary.size()-1; i>=0; --i)//逆着读出 {  printf("%d", binary[i]);  }  printf("\n");  }  return 0;  
}

进制转换(限制范围)

题目描述:
将一个长度最多为 30 位数字的十进制非负整数转换为二进制数。
输入: 多组数据,每行为一个长度不超过 30 位的十进制非负整数。(注意是十进制数字的个数可能有 30 个,而不是 30bits 的整数)
输出: 每行输出对应的二进制数。
样例输入:
0
1
3
8
样例输出:
0
1
11
1000
思路提示:1、有人 会觉得这道题和前一道题是一样的,即都是将十进制数转换成二进制数。但本题明确指出输入的数可能多达 30 位,因此无法再用整型数来保存该题的输入,而要用字符串来模拟数字。
2、对于整除运算,需要重新写一个函数来完成字符串的除法功能。把字符串从高到低逐位除以除数。如果某位不能整除,那么就保留它除以除数的余数,余数乘以 10 后和低一位一起进行处理。这样,就能模拟出除法的效果,但这种做法可能会前置多余的 0,这时只需取首个非 0 位之后的字符串,便可得到想要的结果。
代码表示:
#include <bits/stdc++.h>
using namespace std;string Divide(string str, int x) { // 自定义字符串除法函数int remainder = 0; // 保存余数for (int i = 0; i < str.size(); ++i) {int current = remainder * 10 + str[i] - '0';str[i] = current / x + '0'; // 更新商的字符表示remainder = current % x; // 更新余数}int pos = 0;while (str[pos] == '0') { // 寻找首个非 0 下标pos++;}return str.substr(pos); // 删除前置多余的 0
}int main() {string str;while (cin >> str) {vector<int> binary; // 存储二进制位while (str.size() != 0) {int last = str[str.size() - 1] - '0'; // 获取最低位的值binary.push_back(last % 2); // 将最低位对2取模,得到二进制位str = Divide(str, 2); // 将当前数值整除以2}for (int i = binary.size() - 1; i >= 0; --i) { // 逆序输出二进制位printf("%d", binary[i]);}printf("\n");}return 0;
}

6.2 最大公约数与最小公倍数

最大公约数(哈工大)

题目描述:
输入两个正整数,求其最大公约数。
输入: 测试数据有多组,每组输入两个正整数。
输出: 对于每组输入,请输出其最大公约数。
样例输入:
49 14
样例输出:
7
代码表示:
#include <bits/stdc++.h>
using namespace std;int GCD(int a, int b) {if (b == 0) {return a;} else {return GCD(b, a % b);}
}
int main() {int a, b;while (scanf("%d%d", &a, &b) != EOF) {printf("%d\n", GCD(a, b));}return 0;
}
心得体会:

举例说明这个GCD(a,b)是什么意思

假设我们要计算 48 和 18 的最大公约数(GCD)。

  1. 因为 b(18)不等于 0,所以我们继续调用 GCD(18, 48 % 18)。
  2. 计算 48 除以 18 的余数,得到 12。现在我们将调用 GCD(18, 12)。
  3. 因为 b(12)不等于 0,所以我们再次调用 GCD(12, 18 % 12)。
  4. 计算 18 除以 12 的余数,得到 6。现在我们将调用 GCD(12, 6)。
  5. 因为 b(6)不等于 0,所以我们再次调用 GCD(6, 12 % 6)。
  6. 计算 12 除以 6 的余数,得到 0。现在我们将调用 GCD(6, 0)。
  7. 因为此时 b(0)等于 0,根据代码中的逻辑,返回 a(6)作为最大公约数。

因此,最终得到 48 和 18 的最大公约数是 6。


最小公倍数

题目描述:
给定两个正整数,计算这两个数的最小公倍数。
输入:
输入包含多组测试数据,每组只有一行,包括两个不大于 1000 的正整数。
输出:
对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。
样例输入:
10 14
样例输出:
70
代码表示:
#include <bits/stdc++.h>
using namespace std;int GCD(int a, int b) {if (b == 0) {return a;} else {return GCD(b, a % b);}
}
int main() {int a, b;// 循环读取输入的两个整数,并计算它们的最大公约数while (scanf("%d%d", &a, &b) != EOF) {// 输出 a 和 b 的乘积除以它们的最大公约数printf("%d\n", a * b / GCD(a, b));}return 0;
}

心得体会:我滴天!这就是最小公倍数  a * b / GCD(a, b)


6.3 质数

质数也称素数,是指只能被其自身和 1 整除的正整数。

素数判定(哈工大复试)

题目描述:
给定一个数 n ,要求判断其是否为素数( 0, 1 和负数都是非素数)。
输入: 测试数据有多组,每组输入一个数 n
输出: 对于每组输入,若是素数则输出 yes ,否则输出 no
样例输入:
13
样例输出:

yes

代码表示:
#include <bits/stdc++.h>
using namespace std;bool Judge(int x) { // 判断是否为质数if (x < 2) { // 小于 2 必定不是质数return false;}int bound = sqrt(x); // 确定判断上界for (int i = 2; i <= bound; ++i) {if (x % i == 0) {return false; // 如果能被整除,不是质数}}return true; // 是质数
}
int main() {int n;while (scanf("%d", &n) != EOF) {if (Judge(n)) {printf("yes\n"); // 是质数输出 yes} else {printf("no\n"); // 不是质数输出 no}}return 0;
}
心得体会:

注意的点应该放在 int bound = sqrt(x); 确定判断上界!!!仔细想一下确实,还有小于2必定不是,所以在单独的函数开始的时候就可以把他放在最后。


素数(北航上机题)

题目描述:
输入一个整数 n 2 <=   n <= 10000 ),要求输出所有从 1 到这个整数之间(不包括 1 和这个整数)个位为 1 的素数,若没有则输出- 1
输入:输入有多组数据。 每组一行,输入 n
输出: 输出所有从 1 到这个整数之间(不包括 1 和这个整数)个位为 1 的素数(素数之间用空格隔开, 最后一个素数后面没有空格),若没有则输出-1
样例输入:
100
样例输出:
11 31 41 61 71
代码表示:
#include <bits/stdc++.h>
using namespace std;const int MAXN = 10001;
vector<int> prime; // 保存质数
bool isPrime[MAXN]; // 标记数组
void Initial() {//初始化质数 for (int i = 0; i < MAXN; ++i){ // 初始化isPrime[i] = true;}//将 0 和 1 标记为非质数。isPrime[0] = false;isPrime[1] = false;//再次循环遍历从 2 到 MAXN-1 的所有数字。for (int i = 2; i < MAXN; ++i) {if (!isPrime[i]) { // 非质数则跳过continue;}prime.push_back(i);//当前质数 i 加入到 prime 容器中for (int j = i * i; j < MAXN; j += i) {isPrime[j] = false; // 质数的倍数为非质数}}
}
int main() {Initial();int n;while (scanf("%d", &n) != EOF) {bool isOutput = false; // 判断是否有输出for (int i = 0; i < prime.size() && prime[i] < n; ++i) {if (prime[i] % 10 == 1) { // 判断个位是否为 1isOutput = true;printf("%d ", prime[i]);}}if (!isOutput) {printf("-1");}printf("\n");}return 0;
}
心得体会:

1、if (prime[i] % 10 == 1) 是用来判断当前循环到的质数 prime[i] 的个位数字是否为 1。具体来说,当一个质数除以 10 取模的结果等于 1 时,就满足这个条件。

例如,假设当前循环到的质数是 31。那么,31 % 10 的结果是 1,因此它符合条件。而当质数是 37 时,37 % 10 的结果是 7,不等于 1,因此不符合条件。

2、isPrime 的作用是在初始化时标记每个数字是否为质数,以便后续的操作中能够快速判断一个数是否为质数。通过标记数组,可以在程序运行过程中避免重复计算某个数是否为质数,提高程序的效率。

具体来说:

1)在初始化时,通过标记数组将所有数字标记为质数或非质数。

2)在找出质数并存储到 prime 容器中时,利用标记数组跳过已经标记为非质数的数字,减少不必要的计算。

3)在输出符合条件的质数时,也可以利用标记数组快速判断一个数是否为质数。


[蓝桥杯 2023 省 B] 接龙数列

题目描述

对于一个长度为 K 的整数数列:1,2,…,A1​,A2​,…,AK​,我们称之为接龙数列当且仅当 Ai​ 的首位数字恰好等于 Ai−1​ 的末位数字(2≤i≤K)。

例如 12,23,35,56,61,11 是接龙数列;12,23,34,56 不是接龙数列,因为 56 的首位数字不等于于 34 的末位数字。所有长度为 1 的整数数列都是接龙数列。

现在给定一个长度为 N 的数列A1​,A2​,…,AN​,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?

输入格式

第一行包含一个整数 N。

第二行包含 N 个整数A1​,A2​,…,AN​。

输出格式

一个整数代表答案。

代码表示:
#include<bits/stdc++.h>
using namespace std;
int n,m,i,dp[10];
string a;//用字符串存储,便于运算
int main(){ios::sync_with_stdio(false);cin>>n;for(i=n;i--;){cin>>a;dp[a[a.size()-1]-48]=max(dp[a[a.size()-1]-48],dp[a[0]-48]+1);//如果a有贡献
}for(i=0;i<=9;i++)m=max(m,dp[i]);//取最大值cout<<n-m;
}
心得体会:

明天学完动态规划再来看(((φ(◎ロ◎;)φ)))(((φ(◎ロ◎;)φ)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解Python中open()函数指定文件打开方式的用法

当我们用open()函数去打开文件的时候&#xff0c;有好几种打开的模式。 r->只读 w->只写&#xff0c;文件已存在则清空&#xff0c;不存在则创建。 a->追加&#xff0c;写到文件末尾 b->二进制模式,比如打开图像、音频、word文件。 ->更新(可读可写) 这个带号…

Spring MVC中的REST风格

文章目录 REST风格1 REST简介问题导入1.1 REST介绍1.2 RESTful介绍1.3 注意事项 2 RESTful入门案例问题导入2.1 快速入门2.2 PathVariable介绍2.3 RequestBody、RequestParam、PathVariable区别和应用 3 REST快速开发【重点】3.1 代码中的问题3.2 Rest快速开发 4案例&#xff1…

【node】模块化与包(二)

1、模块化的基本概念 模块化是指解决一个复杂的问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 &#xff08;1&#xff09;模块化的优点 遵循固定规则&#xff0c;把大文件拆分成对立并相互依赖…

springboot3 打包报错32-bit architecture x86 unsupported或者 returned non-zero result

springboot3 打包异常情况处理记录 在测试springboot3 native打包时候遇到的异常&#xff0c;百度和谷歌上方法都无法解决我的问题&#xff0c;最后记录一下我最后的原因和解决方案。 前置要求&#xff1a;自己处理好vs的相关内容后 报错一&#xff1a; [1/7] Initializing…

蓝桥杯算法训练VIP-数组查找及替换

题目 1634: 蓝桥杯算法训练VIP-数组查找及替换 时间限制: 3s 内存限制: 192MB 提交: 1629 解决: 890 题目描述 给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素&#xff0c;同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间&#xff0…

跨境电子商务支付与结算的支撑系统

​1、跨境电子商务支付与结算的核心系统。 核心系统是用户执行跨境电子商务支付的核心模块&#xff0c;包括以下具体流程。 ​ ​①用户从跨境电子商务支付应用启动跨境电子商务支付流程。 ②跨境电子商务支付应用根据应用和用户选择的支付工具&#xff0c;来调用对应的支付产…

Linux 动态库和静态库 【详解】

动静态库的基本原理 静态库&#xff08;.a&#xff09;&#xff1a;程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库&#xff08;.so&#xff09;&#xff1a;程序在运行的时候才去链接动态库的代码&#xff0c;多个程序共享使用库的…

SkyEye:助力飞行器状态控制系统仿真

飞行器与常见的航天器一样&#xff0c;属于安全关键领域的大型复杂设备&#xff0c;对安全性、可靠性有着极高的要求。为保证稳定飞行&#xff0c;需要对目标对象进行实时跟踪&#xff0c;通过发出正确的修正偏差指令来操纵飞行器改变飞行姿态&#xff0c;因此对飞行器状态控制…

2024-03-13 作业

网络编程&#xff1a; 1.思维导图&#xff1a; 2.上课写的代码&#xff1a; 2.1网络字节序与主机字节序转换 运行代码&#xff1a; #include <myhead.h> int main() {int num 0x12345678;short int value 0x1234;int num_n htonl(num);int value_n htons(value);…

ISIS单区域实验简述

ISIS 中间系统到中间系统&#xff0c;也是链路状态协议&#xff0c;工作在数据链路层&#xff0c;不依赖IP地址&#xff1b;与OSPF一样采用最短路径SPF算法&#xff0c;收敛速度快。 实验基础配置&#xff1a; r1: sys sysname r1 undo info enable int g0/0/0 ip add 12.1.1.1…

jenkins 使用k8s插件连接k8s集群

jenkins 安装k8s 插件 配置k8s节点 填写k8s 配置信息 生成秘钥 在服务器上面 查看地址 cat /root/..kube/config 查看秘钥 -----BEGIN CERTIFICATE----- MIIDITCCAgmgAwIBAgIIGOkRkIVlo74wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE AxMKa3ViZXJuZXRlczAeFw0yNDAyMDgwNjAwMjdaFw…

王庆:当下股市过于悲观,A股、港股基本完成补跌和普跌过程,逆向布局时机已到

核心观点&#xff1a; 1、房地产对中国经济增长拖累最严重的时期正在过去...密切关注真正拐点的出现。 2、当前资本市场从价格表现上来讲&#xff0c;表现的远远超过了基本面所决定的悲观程度。 由于当前资本市场过于悲观&#xff0c;那么反过来就是孕育着机会。 3、我们判…

快速排序 刷题笔记

思路 分治双指针 在每个区间选定一个基准目标 两个指针从数组的两边向中间推进 使用 while循环判断 do {i;}while(q[i]<x); do{j--;}while(q[j]>x); 每次这样做完就会找到q[i]>x,,,,q[j]小于x 此时我们交换 q[i] ,q[j]于是小于x的数分到了小于x的一侧 大…

《详解:鸿蒙NEXT开发核心技术》

我们现在都知道鸿蒙作为一个国产的全栈自研系统&#xff0c;经过国家主推后。已经引起人们很大的关注&#xff0c;其中作为开发者来说&#xff1b;许多一线大厂已经与其华为鸿蒙展开原生应用的合作了&#xff0c;目前了解到已经有200家。而之后出现了很多的高薪鸿蒙开发岗位&am…

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…

Linux本地搭建FastDFS系统

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

jenkins部署go应用 基于docker-compose

丢弃旧的的构建 github 拉取代码 指定go的编译版本 安装插件 拉取代码是排除指定的配置文件 比如 conf/config.yaml 文件 填写配置文件内容 比如测试环境一些主机信息 等 可以配置里面 构建的时候选择此文件替换开发提交的配置文件。。。。 编写docker-compose 文件 docker…

短视频解析接口分发系统

宝塔面板&#xff1a;Nginx系统 php7.2 Mysql 5.6-5.7 伪静态Thinkphp 上传文件直接访问域名安装即可 可以自备 听说后边要出saas去水印小程序 下载地址&#xff1a;https://pan.xunlei.com/s/VNskSEelfRVIzoSm5P5Rcw34A1?pwdqzhh# 接口演示&#xff1a; 前端演示…

解决ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件

问题所示&#xff1a;ipconfig不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 解决办法如下: 1.右击此电脑&#xff0c;点击属性设置&#xff1a; 2.点击高级系统设置 3.点击进入环境变量 4.在系统变量中进行设置&#xff0c;双击PATH进行配置 5.点击新建&am…

2024-Android大厂(字节跳动,腾讯

PS&#xff1a;全文点击蓝色文字&#xff0c;即可跳转链接 【字节面试官&#xff1a;看了3000多份简历&#xff0c;面试1000场后&#xff0c;想给金九银十找工作的程序员几点建议附大厂真题面经】 本文主要介绍校招&#xff0c;上半年疫情原因真正面试的时间和机会也不多&#…