当前位置:   article > 正文

C-语言每日刷题

C-语言每日刷题

目录

[蓝桥杯 2015 省 A] 饮料换购

题目描述

输入格式

输出格式

输入输出样例

# [蓝桥杯 2023 省 A] 平方差

题目描述

输入格式

输出格式

输入输出样例

说明/提示

【样例说明】

  [NOIP2001 普及组] 数的计算

题目描述

输入格式

输出格式

输入输出样例

说明/提示

样例 1 解释

数据规模与约定

 [NOIP2008 提高组] 笨小猴

题目描述

输入格式

输出格式

输入输出样例

说明/提示


[蓝桥杯 2015 省 A] 饮料换购

题目描述

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。

输入格式

一个整数 n,表示开始购买的饮料数量。(0<n<10000)

输出格式

一个整数,表示实际得到的饮料数。

输入输出样例

输入 #1

100

 输出 #1

149

 输入 #2

101

输出 #2

151
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n = 0;
  5. int sum = 0, num = 0;//sum瓶盖数,num饮料数
  6. scanf("%d", &n);
  7. while (n)
  8. {
  9. n--;
  10. sum++;
  11. num++;
  12. if (sum == 3)
  13. {
  14. num++;
  15. sum = 1;//换了一瓶饮料,就有一个盖子
  16. }
  17. }
  18. printf("%d", num);
  19. return 0;
  20. }

# [蓝桥杯 2023 省 A] 平方差

题目描述

给定 L,R,问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 x=y^2−z^2。

输入格式

输入一行包含两个整数 L,R,用一个空格分隔。

输出格式

输出一行包含一个整数满足题目给定条件的 x 的数量。

输入输出样例

输入 #1

1 5

输出 #1

4

说明/提示

【样例说明】
  • 1=1^2−0^2
  • 3=2^2−1^2
  • 4=2^2−0^2
  • 5=3^2−2^2
  1. #include<stdio.h>
  2. int JiShu(int n) {
  3. if (n % 4 == 0) {
  4. return 1;
  5. }
  6. else if (n % 2 != 0) {
  7. return 1;
  8. }
  9. return 0;
  10. }
  11. //1.如果y+z为奇数:x就为奇数, n^2-(n-1)^2 = 2*n+1;
  12. //2.如果y-z为偶数:x就为4的倍数,n^2-(n-2)^2 = 4*n;
  13. int main() {
  14. int n, m, count = 0;
  15. scanf("%d%d", &n, &m);
  16. for (int i = n; i <= m; i++)
  17. {
  18. if (JiShu(i) == 1)
  19. {
  20. count++;
  21. }
  22. }
  23. printf("%d", count);
  24. }

  [NOIP2001 普及组] 数的计算

 

题目描述

给出正整数 n,要求按如下方式构造数列:

  1. 只有一个数字 n 的数列是一个合法的数列。
  2. 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。

请你求出,一共有多少个合法的数列。两个合法数列 a,b 不同当且仅当两数列长度不同或存在一个正整数 i≤∣a∣,使得 ai​不等于bi​。

输入格式

输入只有一行一个整数,表示 n。

输出格式

输出一行一个整数,表示合法的数列个数。

输入输出样例

输入 #1

6

输出 #1

6

说明/提示

样例 1 解释

满足条件的数列为:

  • 6
  • 6,1
  • 6,2
  • 6,3
  • 6,2,1
  • 6,3,1

数据规模与约定

对于全部的测试点,保证 1≤n≤10^3。

  1. #include<stdio.h>
  2. int JiShu(int n,int* str)
  3. {
  4. int count = 0;
  5. for (int i = 1; i <= n; i++)
  6. {
  7. for (int j = 0; j <= i / 2; j++)
  8. {
  9. str[i] += str[j];
  10. //str[1] = 1
  11. //str[2] = 2 = str[1]+1
  12. //str[3] = 2 = str[1]+1
  13. //str[4] = 4 = str[1]+str[2]+1
  14. //str[5] = 4 = str[1]+str[2]+1
  15. //str[6] = 6 = str[1]+str[2]+str[3]+1
  16. /*
  17. 我们以6为例子来进行说明
  18. 6后面可以跟上1,2,3组成61,62,621,63,631
  19. 61,63后面跟不了,62可以跟上1组成621,63可以跟上1组成631
  20. 再加上6本身就可以得到6的种类
  21. 即61,62,621,63,631
  22. 也就是只要算出1,2,3的种类加上自身就可以得到6的种类
  23. */
  24. }
  25. str[i]++;//加上本身
  26. }
  27. count = str[n];
  28. return count;
  29. }
  30. int main()
  31. {
  32. int n = 0;
  33. int str[1000] = { 0 };
  34. scanf("%d", &n);
  35. int rs = JiShu(n,str);
  36. printf("%d", rs);
  37. return 0;
  38. }

 [NOIP2008 提高组] 笨小猴

题目描述

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:假设 maxn 是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果 maxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。

输入格式

一个单词,其中只可能出现小写字母,并且长度小于 100。

输出格式

共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出 Lucky Word,否则输出 No Answer

第二行是一个整数,如果输入单词是 Lucky Word,输出 maxn−minnmaxn−minn 的值,否则输出 0。

输入输出样例

 输入 #1

error

输出 #1

Lucky Word
2

 输入 #2

olympic

 输出 #2

No Answer
0

说明/提示

【输入输出样例 1 解释】

单词 error 中出现最多的字母 r 出现了 3 次,出现次数最少的字母出现了 1 次,3−1=2,2 是质数。

【输入输出样例 2 解释】

单词 olympic 中出现最多的字母 i 出现了 1 次,出现次数最少的字母出现了 1 次,1−1=0,0 不是质数。

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100] = { 0 }, maxn = 0, minn = 100;
  6. const int ret[25] = { 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 };
  7. //0-100的所有质数,加const修饰表示不可修改
  8. int arr[26] = { 0 };
  9. gets(str);
  10. int rs = strlen(str);
  11. for (int i = 0; i < rs; i++)
  12. {
  13. arr[str[i] - 'a']++;
  14. //记录各个字母出现的次数
  15. //arr[0]表示a,arr[1]表示b
  16. }
  17. for (int i = 0; i < 26; i++)
  18. {
  19. if (arr[i] > maxn)
  20. {
  21. maxn = arr[i];
  22. }
  23. if (arr[i] > 0 && arr[i] < minn)
  24. {
  25. minn = arr[i];
  26. }
  27. }
  28. for (int i = 0; i < 25; i++)
  29. {
  30. if ((maxn - minn) == ret[i])
  31. {
  32. printf("Lucky Word\n%d", maxn - minn);
  33. return 0;
  34. }
  35. }
  36. printf("No Answer\n0");
  37. return 0;
  38. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/30124?site
推荐阅读
相关标签
  

闽ICP备14008679号