福州牛蛙 网站建设,专家库 网站 建设方案,学历提升报名网,网站该怎么做链接目录
[蓝桥杯 2022 省 A] 求和
题目描述 [蓝桥杯 2019 省 B] 特别数的和
题目描述
[蓝桥杯 2023 省 A] 填空问题
题目描述 [蓝桥杯 2020 省 AB1] 走方格
题目描述
[蓝桥杯 2017 省 AB] 分巧克力
[蓝桥杯 2016 省 B] 交换瓶子
题目描述 [蓝桥杯 2022 省 A] 求和
题目描…目录
[蓝桥杯 2022 省 A] 求和
题目描述 [蓝桥杯 2019 省 B] 特别数的和
题目描述
[蓝桥杯 2023 省 A] 填空问题
题目描述 [蓝桥杯 2020 省 AB1] 走方格
题目描述
[蓝桥杯 2017 省 AB] 分巧克力
[蓝桥杯 2016 省 B] 交换瓶子
题目描述 [蓝桥杯 2022 省 A] 求和
题目描述 输入 #1
4
1 3 6 9样例输出 #1
117 解题思路我们拿到这个题我们可以两个for循环结束这个题不过我们可以思考更深层次的东西比如将有规律的几组乘积合并仔细看就能发现每个数都是乘上以他为某一个乘数的乘上以他开始的后面所有数的总和因此我们可以每次算哪个数的总乘积可以先把它减掉然后在乘起来 #includebits/stdc.h
using namespace std;
int main(){int n,i,a[200005];long long sum 0,ans 0;cinn;for(i 0;in;i){cina[i];ans a[i];}for(i 0;in-1;i){ans - a[i];sum a[i]*ans;}coutsumendl;return 0;
}
[蓝桥杯 2019 省 B] 特别数的和
题目描述 输入 #1
40
输出 #1
574 思路
没什么好说的一眼就是暴力直接秒了。代码如下
#include bits/stdc.h
using namespace std ;
typedef long long LL;
int n;
LL ans 0;
bool check(int x) {while(x) {int t x % 10;if(t2||t0||t1||t9) {return true;}x / 10;}return false;
}
int main () {cin n;for (int i 1; i n; i ) {if(check(i)) {ans i;}}cout ans endl;return 0;
}[蓝桥杯 2023 省 A] 填空问题
题目描述 思路直接暴力枚举即可因为可以在本地跑没有限时一答案为4430091。 思路二答案8335366 1.fij表示前 i 题得分为 j 的方案。 2.状态转移方程分答对了和答错了。 3.初始化根据定义 f001 4.递推。
最终题解:
#includestdio.h
int main()
{char c getchar();if(c A)printf(4430091);elseprintf(4165637);return 0;
} [蓝桥杯 2020 省 AB1] 走方格
题目描述 输入 #1
3 4输出 #1
2 思路动态规划的典型题目类型按照动态思路求解
#includeiostream
using namespace std;
int main()
{int dp[33][33]{0};dp[1][1]1;int n,m;cinnm;for(int i1;in;i){for(int j1;jm;j){if(i1j1) continue;if(i%2||j%2) {dp[i][j]dp[i-1][j]dp[i][j-1];}}}coutdp[n][m]endl;
}
题目背景
小明正在玩一个“翻硬币”的游戏。 思路
因为输入的是字符串所以定义char类型的数组来存储。
主函数部分可以这样想输入两个由o*组成的字符串取得a字符串的长度定义一个循环变量用来遍历整个a数组通过a数组与b数组的比较可知哪里不同那么直接替换即可最后在循环中用i变量来计数
我的做法是直接递归搜索如果翻转之后的位置ks[0]到s[k]的情况都成立那么向下递归让k1翻转数1否则恢复翻转之前的状态k1翻转数不变。出口如果k等于s的长度那么字符串翻转后的结果满足要求返回翻转数。
#include bits/stdc.h
using namespace std;
int main(){char a[1001];char b[1001];cinab;int lenstrlen(a);int i0,sum0;while(ilen){if(a[i]!b[i]){a[i1](a[i1]*?o:*);sum;}i;}coutsum;return 0;
}
[蓝桥杯 2017 省 AB] 分巧克力
题目描述 思路可以将其抽象成小于可行大于不可行的二分问题。
在判断时遍历全部巧克力每个巧克力分割成的小巧克力数相加。分割成的小巧克力数目的计算方式为高整除枚举到的x宽整除枚举到的x的乘积。
#includebits/stdc.h
using namespace std;
const int N 1e510;
int n, k, mx 0;
int h[N], w[N];
bool check (int x) {int res 0;for (int i 1;i n;i ) res (h[i] / x) * (w[i] / x);return res k;
}
int main()
{cin n k;for (int i 1;i n;i ) cin h[i] w[i],mx max (mx, max(h[i], w[i]));int l 1, r mx, mid;while (l r) {mid l r 1 1;if (check (mid)) l mid;else r mid - 1;}cout l endl;return 0;
}
[蓝桥杯 2016 省 B] 交换瓶子
题目描述 核心步骤 例如A[3]{2,0,1},2在0的位置0在1的位置1在2的位置那么把它们画成图的拓扑结构的话就是一个环圈即2-0-1-2。 这样的条件排列成环圈用文字描述为 1、位置和位置上的数字或字符存在一一对应关系 2、每个数字或字符都不在自己应有的位置上 题目要求计算至少交换多少次每交换一次就是这个环内分解为两个独立的环那么我们先计算出环的个数最后得到排列好的就是每个独立的环答案就是总个数 - 环的个数
#includebits/stdc.h
using namespace std;
const int N 1e4 10;
int n;
int a[N];
int len,ans;
bool st[N];
void dfs(int u){if(st[u]) return ;st[u] true;dfs(a[u]);
}
int main(){cin n;for(int i 1; i n; i ) cin a[i];for(int i 1; i n; i ){if(!st[i]){ans ;dfs(i);} }coutn - ans;return 0;
}