C语言之练习题
欢迎来到我的世界
希望这篇文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 !
目录
- 前言
- 编程题
- 第一题:珠玑妙算
- 第二题:寻找奇数
- 第三题:寻找峰值
- 第四题:数对
- 总结
前言
这是暑假题目的收尾文章,我的暑假作业一共写了四篇文章,本篇文章有四篇编程题,我很喜欢四这个数字,感谢铁子们的支持,新的篇章即将来到。😎
编程题
第一题:珠玑妙算
地址:oj地址
解题思路:
暴力求解:分别记录猜中的个数和伪猜中的个数存入数组相应位置。
- 猜中的个数好记录,直接让颜色组合的数组与猜测的数组进行一一比较,如果相等,那猜中的个数++;
- 伪猜中的个数进行两次遍历;第一次遍历颜色组合的数组,在让该数组中的元素都遍历一遍猜测数组元素,如果相等伪猜中个数++,注意:并将猜测数组该位置赋值为空格
' '
这是为了确定唯一性;
注意:这里伪猜中的个数包含了猜中的个数,所以在存入数组的是(伪猜中的个数-猜中的个数)
;
代码实现:
int* masterMind(char* solution, char* guess, int* returnSize) {*returnSize = 2;//只用两个元素,分别记录猜中个数和伪猜中个数int* arr = (int*)malloc(sizeof(int) * (*returnSize));int i = 0;int sum = 0;//猜中的个数for (i = 0; i < 4; i++){if (solution[i] == guess[i]){sum++;}}arr[0] = sum;int count = 0;//记录违猜中的个数int j = 0;for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){if (solution[i] == guess[j] )//找到相等的,且将猜测数组中的值该成空格;{count++;guess[j] = ' ';break;}}}arr[1] = count - arr[0];return arr;
}
第二题:寻找奇数
地址:oj地址
解题思路:
这道题其实也叫做:寻找单身狗
考察的是对按位异或^
的深刻了解:我们首先来了解下
^
他的运算原则是:相同为0
,相异位1
;
在来看到:一个数^
他相同数结果为0
;
假如一个数3
:二进制码:011
;
当3 ^ 3 = 0
所以:3 ^ 0 = 3
;
结论:0 ^
任何数都 = 该数本身,任何数^
该数本身=0
;所以我们可以利用这一特性:
题目中说输入一个数组,该数组只有唯一的一个单着的;
所以让0
按位异或^
上该数组所有数就可以找出那个单着的数;
就像单身狗一样,无所遁形😎
代码实现:
int main() {int n=0;scanf("%d",&n);int i=0;int arr=0;int m=0;//m^上该数组所有元素for(i=0;i<n;i++){scanf("%d",&arr);m^=arr;}printf("%d",m);return 0;
}
第三题:寻找峰值
地址:oj地址
第一个解题思路:暴力求解
根据在数组范围内,只要一个数严格大于两侧的数就为峰值,对nums数组进行遍历,找到一个峰值即可;
暴力求解,代码实现:
int findPeakElement(int* nums, int numsLen ) {// write code hereint i=0;if(numsLen==1)//若只有一个值,其本身就是峰值return 0;if(nums[0]>nums[1])//若峰值为第一个元素,单独讨论return 0;if(nums[numsLen-1]>nums[numsLen-2])//若峰值为最后一个元素,单独讨论return numsLen-1;for(i=1;i<numsLen-1;i++)//遍历[1,numsLen-1)范围{if(nums[i]>nums[i-1] && nums[i]>nums[i+1])//找到峰值{return i;}}return 0;//若还是找不到峰值,就返回0;
}
第二个解题思路:二分思想
在首元素和最后一个为峰值都要单独考虑;
二分思想:设置三个指针left
,right
,找到中间位置的值mid
,然后根据mid
和其两边的值的进行比较,哪边要大于mid
值就往那边找峰值,直到mid
值严格大于其两边的值;
- 如果
nums[mid]<nums[mid+1]
,那么意味这峰值位于mid
右边,根据二分查找的思想,让left
=mid+1
;- 若
nums[mid]>=nums[mid+1]
,那就意味着峰值位于mid
的左边;根据二分查找的思想,让right
=mid
;- 注意
mid
的值:mid = left + (right - left) / 2;
-
二分求解,代码实现:
int findPeakElement(int* nums, int numsLen ) {// write code hereif (numsLen == 1 || nums[0] > nums[1]) return 0;if (nums[numsLen - 1] > nums[numsLen - 2]) return numsLen - 1;int left = 0, right = numsLen - 1, mid;while (left < right) {mid = left + (right - left) / 2;if (nums[mid] < nums[mid+1])//中间比右边小,意味着右边肯定有个峰值left = mid + 1;else //否则在左边包括当前位置肯定有个峰值right = mid;}return right;
}
第四题:数对
地址:oj地址
第一个解题思路:暴力求解
暴力求解:将
x
和y
分别遍历[1, n]
,进行判断当x % y >= k
时统计计数count++
即可,但是这样的话当 n 的值非常大的时候循环次数将非常恐怖,需要循环n^2
次;
注意:这个方法会运行超时;
代码实现:
#include <stdio.h>int main() {int i=0;int j=0;int n,k;long count=0;scanf("%d%d",&n,&k);for(i=1;i<=n;i++){for(j=1;j<=n;j++){if((i%j)>=2){count++;}}}printf("%ld",count);return 0;
}
第二个解题思路:
要理解数学公式:
((n/y)*(y-k))+((n%y<k)?0:(n%y-k+1))
;
假如n=10,k=3
;
当y <=k
时,意味着任何数字取模y
的结果都在[0, k-1]
之间,都是不符合条件的。
当y=k+1=4
,x 符合条件的数字有 3,7;
当y=k+2=5
,x 符合条件的数字有 3,4,8,9;所以当
y=k+n
:
x小于y当前值,且符合条件的数字数量是:y-k
个;
x大于y当前值,小于2*y
的数据中,且符合条件的数字数量是:y-k
个;
可以能看出来,在y
的整数倍区间内,x
符合条件的数量就是(n / y) * (y - k)
个;
n / y
表示有多少个完整的0 ~ y
区间,y - k
表示有每个区间内有多少个符合条件的数字;
最后还要考虑的是6...
往后这种超出倍数区间超过n
的部分的统计
n % y
就是多出完整区间部分的数字个数,其中k以下的不用考虑,
则符合条件的是n % y - (k-1)
个。
这里需要注意的是类似于9
这种超出完整区间的数字个数 本就小于k
的情况,则为0
最终公式:(n / y) * (y - k) + ((n % y < k) ? 0, (n % y - k + 1))
;
代码实现:
#include <stdio.h>int main() {long n,k;scanf("%ld%ld",&n,&k);if(k==0){printf("%ld",n*n);return 0;}long count=0;for(long y=k+1;y<=n;y++){count+=((n/y)*(y-k))+((n%y<k)?0:(n%y-k+1));}printf("%ld",count);return 0;
}
总结
到了最后:感谢支持
我还想告诉你的是:
------------对过程全力以赴,对结果淡然处之
也是对我自己讲的
相关文章:
![](https://img-blog.csdnimg.cn/dc876b51373c4b3f8975d0dd03e8e8c1.png)
C语言之练习题
欢迎来到我的世界 希望这篇文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言编程题第一题:珠玑妙算第二题:寻找奇数第三题:寻找峰值第四题:数对 总结 前言 这是暑假题目的收尾文章&am…...
![](https://img-blog.csdnimg.cn/img_convert/917631c2bf40b718817b9545cb690ff4.png)
没钱,没人,没经验?传统制造型企业如何用无代码实现转型
2023年,国家市场监督管理总局发布了三项重要标准,包括《工业互联网平台选型要求》、《工业互联网平台微服务参考框架》和《工业互联网平台开放应用编程接口功能要求》。这些标准的发布对于完善工业互联网平台标准体系,提升多样化工业互联网平…...
![](https://www.ngui.cc/images/no-images.jpg)
CentOS ARM 部署 kubernetes v1.24.6
1.背景 之前安装的kubernetes版本为v1.19.0 树莓派使用(CentOS7.9 armv71 Kubernetes1.19.0), 由于版本过低,一些HPA相关的功能支持不是特别好,因此需要将版本升级,本次会将版本升级为v1.24.6. 2. 如何upgrade 2.1. 优雅升级 kubeadm自带…...
![](https://img-blog.csdnimg.cn/img_convert/db8248d35ada46927475891bd65798af.jpeg)
LeetCode 725. Split Linked List in Parts【链表】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
![](https://img-blog.csdnimg.cn/de4fba3733ee48c5a7036d6adff6824f.png#pic_center)
云计算中的负载均衡技术,确保资源的平衡分配
文章目录 1. 硬件负载均衡器2. 软件负载均衡器3. DNS负载均衡4. 内容分发网络(CDN) 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内…...
![](https://www.ngui.cc/images/no-images.jpg)
探索 SOCKS5 代理在跨境电商中的网络安全应用
随着全球化的发展,跨境电商成为了商业界的一颗新星,为企业提供了无限的发展机遇。然而,随之而来的是网络安全的挑战,特别是在处理国际网络流量时。在这篇文章中,我们将探讨如何利用 SOCKS5 代理和代理 IP 技术来加强跨…...
![](https://img-blog.csdnimg.cn/6fcedceef1864b46ae931d84ed1f1781.png)
全网独家:编译CentOS6.10系统的openssl-1.1.1多版本并存的rpm安装包
CentOS6.10系统原生的openssl版本太老,1.0.1e,不能满足一些新版本应用软件的要求,但是它又被wget、mysql-libs、python-2.6.6、yum等一众系统包所依赖,不能再做升级。故需考虑在不影响系统原生openssl的情况下,安装较新…...
![](https://www.ngui.cc/images/no-images.jpg)
【go】异步任务解决方案Asynq实战
文章目录 一.Asynq介绍二.所需工具三.代码示例四.Reference 一.Asynq介绍 Asynq 是一个 Go 库,一个高效的分布式任务队列。 Asynq 工作原理: 客户端(生产者)将任务放入队列服务器(消费者)从队列中拉出任…...
![](https://www.ngui.cc/images/no-images.jpg)
掌握 Android 自动化测试框架 UiAutomator UiAutomator2
掌握 Android 自动化测试框架 UiAutomator & UiAutomator2 一、UiAutomator 简介二、UiAutomator2 的诞生三、UiAutomator2 的应用实践总结你是否曾经在进行 Android 应用开发时,对于如何进行全面、有效的自动化测试感到困惑?你是否想要更高效地进行 UI 测试,而不是一遍…...
![](https://www.ngui.cc/images/no-images.jpg)
c#抽象类(abstract)
概述: C#中的抽象类是一种特殊类型的类,它不能被实例化,只能被继承。抽象类用于提供一个共享的基类,其中定义了一些方法和属性的签名,但没有具体的实现。这些方法和属性可以在派生类中进行实现。 使用抽象类的主要目…...
![](https://img-blog.csdnimg.cn/670b00cb21ba42919cf77ce8423345ee.png)
语义分割实践思考记录(个人备忘录)
一、任务管理器、NVDIA的GPU利用率显示[1][2] 若需要在任务管理器中查看基于Pytorch框架的GPU利用率,那么,我们需要将监控面板监测内容调整为cuda。图一(左)即为英伟达命令行工具面板。 图一 英伟达GPU使用率监控 二、基于混淆矩阵…...
![](https://img-blog.csdnimg.cn/img_convert/d0aba61ea5ee9961fcc6411da01a9fad.jpeg)
Zebec Protocol 成非洲利比亚展会合作伙伴,并将向第三世界国家布局
在 9 月 6 日,The Digital Asset Summit ’23(利比亚大会)在尼日利亚首度阿布贾的 NAF 会议中心举办,该会议对 Web3 领域在非洲地区的发展进行了探索,旨在推动非洲地区区块链产业的进一步发展,据悉该会议室…...
![](https://www.ngui.cc/images/no-images.jpg)
随机流-RandomAccessFile
RandomAccessFile RandomAccessFile 基本操作案例 RandomAccessFile 基本操作 案例 import java.io.*;public class TestMain09 {public static void main(String[] args) throws Exception {insert("D:\\home\\product\\aa.txt",2,"ni");}public static…...
![](https://www.ngui.cc/images/no-images.jpg)
单例和静态类
C#中的单例(Singleton)和静态类(Static Class)是两种不同的设计模式,它们各自有不同的用途和特点。 单例模式是一种设计模式,它确保一个类只有一个实例,并提供全局访问点。通常,单例…...
![](https://www.ngui.cc/images/no-images.jpg)
PMP-项目风险管理的重要性
一、什么是项目风险管理 项目风险管理旨在识别和管理未被其他项目管理过程所管理的风险。如果不妥善管理,这些风险有可能导致项目偏离计划,无法达成既定的项目目标。因此,项目风险管理的有效性直接关乎项目成功与否。 每个项目都在两个层面…...
![](https://www.ngui.cc/images/no-images.jpg)
学习的心得
文章目录 第一节课心得**学会了敲写数学公式** 第一节课心得 老师讲得非常好,我们下载了xmind,如何制作思维导图 学会了敲写数学公式 ∫ 10 20 ( x 2 − 3 x 2 ) d x \displaystyle\int_{10}^{20}(x^2-3x2)dx ∫1020(x2−3x2)dx...
![](https://img-blog.csdnimg.cn/img_convert/585222c9021f29a20683dea0adcab664.png)
Python网络爬虫中这七个li标签下面的属性值,不是固定的,怎样才能拿到他们的值呢?...
点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。 大家好,我…...
![](https://img-blog.csdnimg.cn/723ab53d101d43edb74410e1593c592b.png)
白鲸开源 DataOps 平台加速数据分析和大模型构建
作者 | 李晨 编辑 | Debra Chen 数据准备对于推动有效的自助式分析和数据科学实践至关重要。如今,企业大都知道基于数据的决策是成功数字化转型的关键,但要做出有效的决策,只有可信的数据才能提供帮助,随着数据量和数据源的多样…...
![](https://img-blog.csdnimg.cn/d7a19bc010054cd798fdc2c9f41a5d0a.png)
(其他) 剑指 Offer 65. 不用加减乘除做加法 ——【Leetcode每日一题】
❓ 剑指 Offer 65. 不用加减乘除做加法 难度:简单 写一个函数,求两个整数之和,要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a 1, b 1 输出: 2 提示: a, b 均可能是负数或 0结果不会溢出 …...
![](https://www.ngui.cc/images/no-images.jpg)
RestTemplate 的用法
1.引入对应依赖 2.private final RestTemplate restTemplate; 3.上代码 Service Slf4j public class CspWarehouseServiceImpl implements ICspWarehouseService { private final RestTemplate restTemplate;public CspWarehouseServiceImpl() {this.restTemplate new Rest…...
![](https://img-blog.csdnimg.cn/18dc24123bd74b05856171ff6a01a785.png)
postgresql-使用plpgsql批量插入用户测试数据
目的 使用plpgsql批量插入用户测试数据 ❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤我是分割线❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ 我的环境 客户端:windows 版pgadmin4 服务端:linux版PostgreSQL 15.4 ❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤…...
![](https://img-blog.csdnimg.cn/b1976447b9aa496ebc8479b3c4ed81f8.png#pic_center)
通过Siri打造智能爬虫助手:捕获与解析结构化数据
在信息时代,我们经常需要从互联网上获取大量的结构化数据。然而,传统的网络爬虫往往需要编写复杂代码和规则来实现数据采集和解析。如今,在苹果公司提供的语音助手Siri中有一个强大功能可以帮助我们轻松完成这项任务——通过使用自定义指令、…...
![](https://img-blog.csdnimg.cn/d48c88c2e9ea4cb3833afc87b6168f79.png)
【电源专题】典型设备的接地设计
在文章:【电源专题】接地的类型 中我们讲到不同的历史时期接地概念是不同的,有为了安全的电气接地和物理接地,也有为了提供参考电位的接地。 那么在设备接地的设计中,我们会怎么进行操作呢? 在文章【电源专题】接地的类型讲到一个混合接地的例子,我们可以把大功率的地接…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode-216-组合总和Ⅱ
题目链接: LeetCode-216-组合总和Ⅱ 解题思路:回溯算法 注意事项注释中有 代码实现: class Solution {/*** 和为 n,个数为 k* 求的是组合,不要求顺序* 递归的深度是 k*/public List<List<Integer>> combin…...
![](https://www.ngui.cc/images/no-images.jpg)
[技术杂谈]几款常用的安装包制作工具
下面是几款常用的安装包制作工具: Inno Setup:Inno Setup 是一款免费开源的 Windows 平台上的安装包制作工具,支持多种自定义选项和脚本编写,提供了可视化的界面和易于使用的向导引导。它可以创建用户友好的安装程序,…...
![](https://www.ngui.cc/images/no-images.jpg)
旋转屏幕显示方向-rk3568
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 步骤屏幕旋转处理旋转后触摸问题下面将操作如何旋转RK3568的屏幕显示 步骤 屏幕旋转 屏幕旋转包括俩个部分:Android 显示旋转和 Recovery 显示旋转,如果我们想要物理横屏显示为竖屏,物理竖屏…...
![](https://www.ngui.cc/images/no-images.jpg)
07 Linux补充|秋招刷题|9月6日
目录 Linux 结构体内存字节对齐 静态变量static 空指针 Linux 结构体内存字节对齐 结构体内存字节要对⻬: 32位系统:4 8 32;64位系统:8 16 24 字节对⻬:字节对⻬是指在计算机中,各种类型数据按照⼀定…...
![](https://www.ngui.cc/images/no-images.jpg)
【JavaGuide学习笔记】Day.1
目录 Java基础常见面试题(上) 1.JDK?JRE?JVM? 2.为什么说Java语言是“编译与解释并存”? 3.Java基本数据类型 4.基本类型和包装类型的区别 5.包装类型的缓存机制 6.自动装箱与拆箱了解吗?…...
![](https://img-blog.csdnimg.cn/7aeda74bb5db45e3bfe8ec2db61bc272.png)
大数据课程K18——Spark的ALS算法与显式矩阵分解
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Spark的ALS算法与显式矩阵分解; ⚪ 掌握Spark的ALS算法原理; 一、ALS算法与显式矩阵分解 1. 概述 我们在实现推荐系统时,当要处理的那些数据是由用户所提供的自身的偏好数据,这些…...
![](https://img-blog.csdnimg.cn/6495f29d9ba74771a10434236e8b80e7.png#pic_center)
Android Jetpack架构组件库:Hilt
一、开发者官网关于Hilt库使用链接如下 使用 Hilt 实现依赖项注入 Hilt版本说明 二、工程目录图 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:LearnJetpack-hilt:hilt版本2.48 代…...
![](https://img-blog.csdnimg.cn/20200831215137488.gif#pic_center)
建网站哪个公司好/seo是什么字
一、配置模块 右键配置模块,勾选图表类窗口组件 二、布局 按下图权重分配尺寸 三、变量和标题栏 ①创建变量 ②隐藏标题栏 四、创建初始方法 ①添加事件 ②创建初始化 五、柱状图事件 ①加载事件 ②处理事件 ③预览事件 ④处理事件 六、演示效果 本文章转载自…...
![](/images/no-images.jpg)
网站整体结构/深圳网络营销推广培训
文章目录inv穆尔-彭罗斯广义逆pinv对于两个方阵A,BA,BA,B,若ABEABEABE,且EEE为单位阵,则A,BA,BA,B互逆,可记作AB−1,BA−1AB^{-1}, BA^{-1}AB−1,BA−1。 inv 在numpy和scipy中,均提供了求逆函数,分别是n…...
![](/images/no-images.jpg)
网站开发怎么自动获取位置/常见的网络营销模式
目录 一、scala运算符本质 二、算术运算符 三、逻辑运算符 四、关系运算符 注:scala 与equals区别 五、赋值运算符 六、位运算符 一、scala运算符本质 在Scala中其实是没有运算符的,所有运算符都是方法。 1)当调用对象的方法时&#…...
![](/images/no-images.jpg)
wordpress 外教 缩略图/网站搭建平台都有哪些
第二章 掌握临界知识的底层思维与方法 跳出"低水平勤奋陷阱"...
![](https://img-blog.csdnimg.cn/f6d6c3f3fdc446cc86062a9b517aeb78.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAemh0ZWxlY29t,size_20,color_FFFFFF,t_70,g_se,x_16)
网站域名后缀那个好/输入关键词自动生成文章
智和网管平台以提供全方位网络监控功能,全面管理联网设备为目标,深入用户需求,实现个性化网络监控解决方案。监控设备类型覆盖网络设备、服务器、交换机、中间件、数据库、安全设备、应用服务等;监测指标涵盖连通性、可用性、负载…...
![](/images/no-images.jpg)
马鞍山网站建设兼职/什么网站做推广比较好
题目描述 神犇YY虐完数论后给傻kAc出了一题 给定N, M,求1<x<N, 1<y<M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻必然不会了,于是向你来请教…… 多组输入 输入输出格式 输入格式: 第一行一个整数T 表述数据组数 接下来T行,每行…...