汽车行业网站建设维护服务,网站照片上传不了怎么办,建中英文网站,ps做网站图本专栏为c语言练习专栏#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新#xff0c;通过每天练习#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字#xff1a;数对 截取字符串 #x1f493;博主csdn个人主页#xff1a;小小unico… 本专栏为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 k14 时x符合条件的数字有 3,7 当 y k25 时x符合条件的数字有 3,4,8,9 当 y k36 时x符合条件的数字有 3,4,5,9,10 当 y kn时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
代码实现
#includestdio.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长度字符
代码实现
#includestdio.h
#includestring.hint 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;
}
结果情况 符合题目要求问题得到解决。
总结 文章到这里就要告一段落了有更好的想法或问题欢迎评论区留言。 希望今天的练习能对您有所收获咱们下期见