当前位置: 首页 > news >正文

C语言每日一练--Day(17)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。

今日练习题关键字:数对 截取字符串

在这里插入图片描述

💓博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

Day1

  • 题目一:
    • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 题目二:
    • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 总结:

题目一:

题目描述:

题目来源:数对:
牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。
但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。

牛牛希望你能帮他计算一共有多少个可能的数对。
在这里插入图片描述

在这里插入图片描述

解题思路:

用普通的遍历是没办法走到最后的,数据一但非常大时,时间复杂度就会报错,这里就需要推导一下数学公式:(n / y) * (y - k) + ((n % y < k) ? 0, (n % y - k + 1));

当 y <=k 时,意味着任何数字取模y的结果都在 [0, k-1]之间,都是不符合条件的。
当 y = k+1=4 时,x符合条件的数字有 3,7
当 y = k+2=5 时,x符合条件的数字有 3,4,8,9
当 y = k+3=6 时,x符合条件的数字有 3,4,5,9,10
当 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 表示有每个区间内有多少个符合条件的数字

最后还要考虑的是…往后这种超出倍数区间超过n的部分的统计n % y 就是多出完整区间部分的数字个数,其中k以下的不用考虑,则符合条件的是 n % y - (k-1) 个 这里需要注意的是类似于9这种超出完整区间的数字个数 本就小于k的情况,则为0

代码实现:

#include<stdio.h>
int main() 
{long n, k = 0;long count = 0;while (~scanf("%ld %ld", &n, &k)) {if (k == 0) {printf("%ld\n", n * n);continue;}for (long j = k + 1; j <= n; j++) {long help = n % j < k ? 0 : (n % j) - k + 1;count += (j - k) * (n / j) + help;}printf("%ld\n", count);}return 0;
}

结果情况:

在这里插入图片描述
符合题目要求,问题得到解决。

题目二:

题目描述:

题目来源:截取字符串
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出
数据范围:字符串长度满足 1≤n≤1000 , 1≤k≤n

输入描述:
1.输入待截取的字符串
2.输入一个正整数k,代表截取的长度
输出描述:
截取后的字符串

在这里插入图片描述

解题思路:

1.输入待截取的字符串
2.输入一个正整数k,代表截取的长度
3.遍历输出len长度字符

代码实现:

#include<stdio.h>
#include<string.h>int main() 
{// 输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出int len;char str[1000];
// 1.输入待截取的字符串gets(str);
// 2.输入一个正整数k,代表截取的长度scanf("%d", &len);for (int i = 0; i < len; i++){printf("%c", str[i]);}return 0;
}

结果情况:

在这里插入图片描述
符合题目要求,问题得到解决。

总结:

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!

http://www.lryc.cn/news/152543.html

相关文章:

  • 8月琐碎但值得的事情
  • 苹果Mac系统如何优化流畅的运行?提高运行速度
  • Python 类和对象
  • VC++使用Microsoft Speech SDK进行文字TTS朗读
  • FFmpeg4.3.1+h264在windows下编译与VS2017项目集成
  • mapboxGL3新特性介绍
  • 类ChatGPT大模型LLaMA及其微调模型
  • 50个简洁的提示提高代码可读性和效率(0-10)
  • Linux —— 进程信号
  • Android笔记 自定义控件时drawText字符串宽度的3种计算方式
  • ChatRWKV 学习笔记和使用指南
  • Particle Life粒子生命演化的MATLAB模拟
  • golang中byte和rune的区别?
  • AI图像行为分析算法 opencv
  • MATLAB制图代码【第二版】
  • 5.0: Dubbo服务导出源码解析
  • python自动化测试-自动化基本技术原理
  • lodash 之 _.isEmpty
  • layui数据表格实现表格中嵌套表格,并且可以折叠展开
  • 云端笔记系统-自动化测试
  • 将帅要避免五个方面的弱点:蛮干、怕死、好名、冲动、溺爱民众
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书成都理工大学图书馆
  • vue的第3篇 第一个vue程序
  • 线性求逆元
  • 第一章 USB应用笔记之USB初步了解
  • 小白入门python
  • 《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》
  • Adobe Illustrator 2023 for mac安装教程,可用。
  • ElasticSearch(一)数据类型
  • Spark-Core核心算子