蓝桥杯
记录做过的蓝桥杯题。
kano_s
天寒地冻,路远马亡。
展开
-
[蓝桥杯]纯质数(c++)
#include<iostream>#include<cmath>using namespace std;int prime[20210606];//埃氏筛int main(){ int k, l; int cnt = 0; for (int i = 0; i <= 20210605; i++) { prime[i] = 1; } prime[1] = 0; prime[0] = 0; ...原创 2022-03-09 00:08:24 · 1137 阅读 · 0 评论 -
[蓝桥杯]含2天数(c++)
#include <iostream>using namespace std;int months[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };bool check(int y, int m, int d){ if (d <= 0 || m <= 0 || m >= 13) return false; if (m != 2) { if (d > months[m]) retur...原创 2022-03-17 17:16:01 · 879 阅读 · 0 评论 -
[蓝桥杯]试题 基础练习 字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1 <原创 2022-02-27 23:12:45 · 171 阅读 · 0 评论 -
[蓝桥杯]打水问题、夺宝奇兵、调手表(c++详解)
打水问题题目描述N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小。输入第一行两个正整数N M 接下来一行N个正整数Ti。N,M< =1000,Ti< =1000输出最小的等待时间之和。(不需要输出具体的安排方案)样例输入7 33 6 1 4 2 5 7样例输出11提示一种最佳打水方案是,将N个人按照Ti从小到大的顺序依次分配到M个龙头打水。例如样例中,Ti从小到大排序为1,2,3,4,5,6...原创 2022-03-19 23:51:36 · 462 阅读 · 0 评论 -
[蓝桥杯]天干地支(c++详解)
题目描述古代中国使用天干地支来记录当前的年份。天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。2020 年是庚子年。每原创 2022-03-18 22:49:07 · 2407 阅读 · 2 评论 -
[蓝桥杯]金币、优秀的拆分(c++详解)
金币这题思路比较简单,找前k个数的和,只需要先判断k是否比要减去的数大,若更大则每次让k减1,减2,减3...,若结果大于0,就可让sum加上1^2,2^2,3^2...,若k更小了,假设此时减去的数为n,sum便不能完整地加上n*n了,只能加上k个n。#include <bits/stdc++.h>using namespace std;int main(){ int k,n=1,sum=0; cin>>k; while(k>0) {原创 2022-03-23 12:34:08 · 1984 阅读 · 0 评论 -
[蓝桥杯]算式900、谈判、幸运数(c++详解)
目录算式900谈判幸运数算式900思路这题思路比较简单,运用全排列就可以了。#include<bits/stdc++.h>using namespace std;int main(){ int a[10]={0,1,2,3,4,5,6,7,8,9}; while(next_permutation(a,a+10)) { int b=a[0]*1000+a[1]*100+a[2]*10+a[3]; int c=a[4]*1000+a[5]原创 2022-03-22 21:18:22 · 985 阅读 · 0 评论 -
[蓝桥杯]蓝肽子序列(c++详解)
这是一道求最长公共子串的题,首先得是公共子串,其次是长度得最长,再求其个数。我们可以运用动态规划求解这题,设dp[i][j]的值为第一个序列的前i个子序列与第二个序列的前j个子序列的的最长公共子序列的个数。设str1(第一个序列的子序列个数),str2(第二个序列的子序列个数);当str1[i]==str2[j]时,两个子序列相等,dp[i][j]==dp[i-1][j-1]+1,相当于前i,j个的最长公共子序列的个数就等于i-1,j-1个的最长公共子序列的个数再+1,毕竟多了一次相等的情况,...原创 2022-03-23 19:59:03 · 2080 阅读 · 11 评论 -
[蓝桥杯]K倍区间(c++超详解)
资源限制时间限制:1.0s 内存限制:256.0MB 给定一个长度为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)输出格式原创 2022-03-18 21:39:45 · 6696 阅读 · 4 评论 -
[蓝桥杯]带分数(c++)
带分数 思路这题所运用全排列的方法即可快速求解,带分数可表示为n=b+c/d,由于考虑分数、小数的出现,将等式两边乘d,化为d*n=b*d+c。#include <bits/stdc++.h>using namespace std;int a[9]={1,2,3,4,5,6,7,8,9};int pan(int j,int k)//将提取的每一位组合起来{ int l=0; for(int i=j;i<=k;i++) { l...原创 2022-03-21 21:32:51 · 474 阅读 · 0 评论