目录
[蓝桥杯 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
#includeint main(){int n = 0;int sum = 0, num = 0;//sum瓶盖数,num饮料数scanf("%d", &n);while (n){n--;sum++;num++;if (sum == 3){num++;sum = 1;//换了一瓶饮料,就有一个盖子}}printf("%d", num);return 0;}
# [蓝桥杯 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
#includeint JiShu(int n) {if (n % 4 == 0) {return 1;}else if (n % 2 != 0) {return 1;}return 0;}//1.如果y+z为奇数:x就为奇数,n^2-(n-1)^2 = 2*n+1;//2.如果y-z为偶数:x就为4的倍数,n^2-(n-2)^2 = 4*n;int main() {int n, m, count = 0;scanf("%d%d", &n, &m);for (int i = n; i <= m; i++){if (JiShu(i) == 1) {count++;}}printf("%d", count);}
[NOIP2001 普及组] 数的计算
题目描述
给出正整数n,要求按如下方式构造数列:
- 只有一个数字n的数列是一个合法的数列。
- 在一个合法的数列的末尾加入一个正整数,但是这个正整数不能超过该数列最后一项的一半,可以得到一个新的合法数列。
请你求出,一共有多少个合法的数列。两个合法数列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。
#includeint JiShu(int n,int* str){int count = 0;for (int i = 1; i <= n; i++){for (int j = 0; j <= i / 2; j++){str[i] += str[j]; //str[1] = 1//str[2] = 2 = str[1]+1//str[3] = 2 = str[1]+1//str[4] = 4 = str[1]+str[2]+1//str[5] = 4 = str[1]+str[2]+1//str[6] = 6 = str[1]+str[2]+str[3]+1/*我们以6为例子来进行说明6后面可以跟上1,2,3组成61,62,621,63,63161,63后面跟不了,62可以跟上1组成621,63可以跟上1组成631再加上6本身就可以得到6的种类即61,62,621,63,631也就是只要算出1,2,3的种类加上自身就可以得到6的种类*/}str[i]++;//加上本身}count = str[n];return count;}int main(){int n = 0;int str[1000] = { 0 };scanf("%d", &n);int rs = JiShu(n,str);printf("%d", rs);return 0;}
[NOIP2008 提高组] 笨小猴
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn−minn是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。
输入格式
一个单词,其中只可能出现小写字母,并且长度小于100。
输出格式
共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出Lucky Word
,否则输出No Answer
;
第二行是一个整数,如果输入单词是Lucky Word
,输出maxn−minnmaxn−minn的值,否则输出0。
输入输出样例
输入 #1
error
输出 #1
Lucky Word2
输入 #2
olympic
输出 #2
No Answer0
说明/提示
【输入输出样例 1 解释】
单词error
中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3−1=2,2是质数。
【输入输出样例 2 解释】
单词olympic
中出现最多的字母i出现了1次,出现次数最少的字母出现了1次,1−1=0,0不是质数。
#include#includeint main(){char str[100] = { 0 }, maxn = 0, minn = 100;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 };//0-100的所有质数,加const修饰表示不可修改int arr[26] = { 0 };gets(str);int rs = strlen(str);for (int i = 0; i < rs; i++){arr[str[i] - 'a']++;//记录各个字母出现的次数//arr[0]表示a,arr[1]表示b}for (int i = 0; i maxn){maxn = arr[i];}if (arr[i] > 0 && arr[i] < minn){minn = arr[i];}}for (int i = 0; i < 25; i++){ if ((maxn - minn) == ret[i]){printf("Lucky Word\n%d", maxn - minn);return 0;}}printf("No Answer\n0");return 0;}