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

代码实现:

c 复制代码
#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长度字符

代码实现:

c 复制代码
#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;
}

结果情况:

符合题目要求,问题得到解决。

总结:

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。

希望今天的练习能对您有所收获,咱们下期见!

相关推荐
M78佐菲18 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
wWYy.20 小时前
C++与C的区别
c语言·c++
LuminousCPP21 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
程序员与背包客_CoderZ1 天前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
william_yangshun1 天前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
Yyyyyy~1 天前
【C语言】数据类型和变量【下】
c语言
小雪崩1 天前
嵌入式学习 day30:minilog
linux·c语言·学习
二级小助手1 天前
C语言二级操作题高频真题精解与大题代码模板
c语言·计算机二级·二级c语言·c语言操作题·c语言真题·c语言大题
kkkkkkkkkk_Z2 天前
学嵌入式和C语言编程数据结构|学习日记Day22:栈,二叉树,哈希存储
c语言·数据结构·学习
Navigator_Z2 天前
LeetCode //C - 1206. Design Skiplist
c语言·算法·leetcode