蓝桥杯

蓝桥杯—饮料换购

谁说胖子不能爱 提交于 2020-03-04 17:29:59
饮料换购乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。 输入:一个整数n,表示开始购买的饮料数量(0<n<10000) 输出:一个整数,表示实际得到的饮料数 例如: 用户输入: 100 程序应该输出: 149 用户输入: 101 程序应该输出: 151 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 #include<iostream> using namespace std; int main() { int n,x,d,ans; cin>>n; ans=n; while(n>=3) { x=n/3; ans+=x; d=n%3;//没换的瓶盖加入下一次换酒 n=n/3+d; } cout<<ans<<endl; return 0; } 来源: CSDN 作者: Lionel_M 链接: https:/

蓝桥杯 历届试题 合根植物java(dfs)

时光怂恿深爱的人放手 提交于 2020-03-04 14:14:51
问题描述   w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。   这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。   如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗? 输入格式   第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。   接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)   接下来k行,第行两个整数a,b,表示编号为a的小格子和编号为b的小格子合根了。   格子的编号一行一行,从上到下,从左到右编号。   比如:5 * 4 的小格子,编号:   1 2 3 4   5 6 7 8   9 10 11 12   13 14 15 16   17 18 19 20 样例输入 5 4 16 2 3 1 5 5 9 4 8 7 8 9 10 10 11 11 12 10 14 12 16 14 18 17 18 15 19 19 20 9 13 13 17 样例输出 5 样例说明   其合根情况参考下图 时间限制:2.0s 内存限制:256.0MB import java.beans.Visibility; import java.util.Scanner; public class

蓝桥杯 试题 基础练习 字母图形

試著忘記壹切 提交于 2020-03-04 00:00:16
试题 基础练习 字母图形 思路:其实这道题不用多次循环,题中已经很明确的告诉,要寻找规律,所以,我们要去寻找其中的规律。接下来是我寻找规律的思路,首先遇到这种题,我们第一反应是横竖看,但是,横竖的规律不是很明显。接下来我们观察下对角线,发现一个规律,当 横-竖=0时,输出皆为A,以此规律,我们试着拓展,当输出为B时,是否横竖也有规律,经过观察,当输出B时,横-竖的绝对值为1,我们继续拓展,C为2……由此,我们便找到了规律。 代码: #include<iostream> #include<algorithm> using namespace std; int main(){ int n, m, i, j; cin >> n >> m; for (i = 0; i < n; i++){ for (j = 0; j < m; j++){ char ch = 'A' + abs(i - j); cout << ch; } cout << endl; } system("pause"); return 0; } 来源: https://www.cnblogs.com/pcdl/p/12405269.html

蓝桥杯--饮料换购

心不动则不痛 提交于 2020-03-03 18:36:32
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。 输入:一个整数n,表示开始购买的饮料数量(0<n<10000) 输出:一个整数,表示实际得到的饮料数 例如: 用户输入: 100 程序应该输出: 149 用户输入: 101 程序应该输出: 151 资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 这道题我在纸上自己算了一遍过程,然后在利用我写的过程写出了伪代码,稍加调整就写出来了 # include <iostream> # include <cstdio> # include <fstream> # include <algorithm> # include <cmath> # include <queue> # include <deque> # include <map> # include <set> #

2017年第八届蓝桥杯C++B组G题

别说谁变了你拦得住时间么 提交于 2020-03-03 15:48:42
2017年第八届蓝桥杯C++B组G题 K倍区间 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和 是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <= 100000) 输出 输出一个整数,代表K倍区间的数目。 例如, 输入: 5 2 1 2 3 4 5 程序应该输出: 6 这道题高老师也讲过~ 这个题目是同余定理。 求一下前缀和。找区间是K的倍数的有多少个。 我们可以看看(sum[i] - sum[j]) % k == 0,如果成立,那么此区间[i+1, j]是符合要求的区间。 上面的式子我们可以移项,成为sum[i] %k == sum[j] % k; 那我们把前缀和求余的值保存下来 如果是0,那么代表这个数(也可以叫做区间)直接是k的倍数。直接加到ans里面去就可以啦。 如果两个余数相同,那么这个区间就是符合要求的区间。 我们选取计数的数值大于1的值,任意选取两个就可以啦。这就是一个组合问题啦~ C(n, 2)=n * (n - 1) / 2 然后累加就可以啦~ 这道题分析完是不是很简单啦~ 代码部分 # include <bits

问题 1545: [蓝桥杯][算法提高VIP]现代诗如蚯蚓(C++)

六眼飞鱼酱① 提交于 2020-03-03 15:18:02
题目描述 现代诗如蚯蚓 断成好几截都不会死 字符串断成好几截 有可能完全一样 请编写程序 输入字符串 输出该字符串最多能断成多少截完全一样的子串 样例说明 最多能断成四个”abc”,也就是abc重复四遍便是原串 同时也能断成两个”abcabc” 最坏情况是断成一个原串”abcabcabcabc” 数据规模和约定 字符串长度< =1000 输入 一行,一个字符串 输出 一行,一个正整数表示该字符串最多能断成的截数 样例输入 abcabcabcabc 样例输出 4 本题要求是求出一个字符串能断成多少相同的子字符串。 (1)首先,我们取长度为i的子字符串,子字符串取的最长长度为输入字符串的1/2,因为若有相同的串,最少断成的截数为2,子字符串最长长度也就是输入字符串的1/2。 (2)设置一个字符串s1用来存储长度为1,2,3,…,len/2的子字符串。 (3)再设置一个字符串s2用来存储s1之后的相同长度的子字符串,若与s1比较全部相同,那么输出s.length()/i,也就是字符串的长度除以断成子字符串的长度,得出的结果即为断成的截数。 # include <bits/stdc++.h> using namespace std ; int main ( ) { string s ; string s1 ; string s2 ; cin >> s ; for ( int i = 1 ;

蓝桥杯2013-省赛-C/C++-A组4题

北城以北 提交于 2020-03-02 19:05:27
题目 标题: 颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。 其标价都是4位数字(即千元不等)。 小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。 这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。 有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了! 庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。 请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少? 答案是一个4位的整数,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 答案 9088 代码 1 /*2013-蓝桥杯-省-A-4*/ 2 #include<iostream> 3 #include<map> 4 #include<vector> 5 #include<algorithm> 6 using namespace std; 7 map<char ,char> rev

蓝桥杯第五届真题:分糖果

99封情书 提交于 2020-03-01 23:51:44
点击查看:蓝桥杯历年真题 题解目录 分糖果 思路分析: 1. 循环判断是否达到全部相等的状态 2. 记录原有的糖果总数 3. 对数组每一项进行 除以 2 ,为每位小朋友分出自己糖果一般后尚未得到糖果的数量 4. 辅助变量记录a [ 0 ] , 对a [ 0 ] ~ a [ n - 2 ] 执行 a [ i ] += a [ i + 1 ] 操作,a [ n - 1 ] += t ; 得到每一位小朋友收到的糖果数 + 自己剩余的糖果数 5. 对每一个为奇数糖果的小朋友 ++ 操作。 6. 最后,达到平衡时,记录现有的糖果总数,sum2 - sum1为老师发的糖果数 package java_2014_B ; import java . util . Scanner ; public class Main008_ 分糖果 { static int sum1 , sum2 ; public static void main ( String [ ] args ) { Scanner in = new Scanner ( System . in ) ; int n = in . nextInt ( ) ; int [ ] a = new int [ n ] ; for ( int i = 0 ; i < n ; i ++ ) { a [ i ] = in . nextInt ( ) ;

[蓝桥杯2019初赛]Fibonacci数列与黄金分割

会有一股神秘感。 提交于 2020-03-01 11:52:12
[蓝桥杯2019初赛]Fibonacci数列与黄金分割 题目描述 输入 输出 样例输入 2 样例输出 0.50000000 怎么说吧,蓝桥杯的题都有一个特别的技巧:从题目中找线索。 这也可以说是一个坑吧。 刚看这个题就感觉一定要用long long int,然后发现其实用了也没用,2000000000项的斐波那契数列根本存不了,然后就只能注意题目中的一点:趋近于黄金分割,然后就会想是不是在第多少项就不动了呢,所以先打出来一个一个的试,就发现从第20项开始就为0.61803399,不动了。 本来还以为是要用高精度这类的东西,只能说想偏了吧。 # include <iostream> using namespace std ; long long int f [ 300 ] ; int main ( ) { f [ 1 ] = 1 ; f [ 2 ] = 1 ; int n ; for ( int i = 3 ; i <= 100 ; i ++ ) f [ i ] = f [ i - 1 ] + f [ i - 2 ] ; cin >> n ; if ( n < 20 ) printf ( "%.8lf\n" , 1.0 * f [ n ] / f [ n + 1 ] ) ; else cout << "0.61803399" ; } 来源: CSDN 作者: lcforever7

蓝桥杯---FJ的字符串---DFS+记忆化

梦想与她 提交于 2020-03-01 11:11:03
试题 基础练习 FJ的字符串 资源限制   时间限制:1.0s 内存限制:512.0MB 问题描述   FJ在沙盘上写了这样一些字符串:   A1 = “A”   A2 = “ABA”   A3 = “ABACABA”   A4 = “ABACABADABACABA”   … …   你能找出其中的规律并写所有的数列AN吗? 输入格式   仅有一个数:N ≤ 26。 输出格式   请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。 样例输入 3 样例输出 ABACABA 实现代码 # include <iostream> # include <string> # include <cstring> using namespace std ; int n ; char a [ 26 ] ; string ans [ 26 ] ; string dfs ( int n ) { if ( ans [ n ] . length ( ) ) return ans [ n ] ; if ( n == 0 ) return ans [ 0 ] = a [ 0 ] ; else return ans [ n ] = dfs ( n - 1 ) + a [ n ] + dfs ( n - 1 ) ; } int main ( ) { for ( int i = 0 ;