抚州市建设局官网站,深圳影视广告在哪里好,wordpress手机版菜单,南雄网站建设蓝桥杯真题31日冲刺 |第一天
一#xff1a;完全平方数 题目#xff1a;[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路#xff1a; 将 每个 完全平方数都 消掉#xff0c;剩下的就是 不能构成平方的数 以12 为例#xff1a; 所以 12 只要再 乘个三 即可满足 代…蓝桥杯真题31日冲刺 |第一天
一完全平方数 题目[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路 将 每个 完全平方数都 消掉剩下的就是 不能构成平方的数 以12 为例 所以 12 只要再 乘个三 即可满足 代码实现 #include iostream
#includecmath
using namespace std;
int main()
{// 请在此输入您的代码long long x;cinx;for(long long i2;i*ix;i){while(x % (i*i) 0) //将 每个 完全平方数都 消掉剩下的就是 不能构成平方的数x / i*i;}coutxendl;return 0;
}总结 所以当 我们 遇到 平方数 求解的 题时 我们要 学会 拆分 这就是 化繁为简难题就是 这样 一步步 变 简单的
二9数算式 题目9数算式 思路 我们 先看 其中 一种字符串的排列化繁为简 --》 所以 只要我们列出 所有 排列 中的 所有 left,right 的取值就能找到 满足要求的 left,right 代码实现 #include iostream
#includealgorithm
using namespace std;bool Is_Accord(int x)
{int v[10]{0};while(x!0){v[x%10] 1;x x/10;}for(int i1;i9;i){if(v[i] !1)return false;}return true;
}
int main()
{// 请在此输入您的代码//全排列 用 algorithm 里的 next_permutation 函数来获取 排列string s 123456789;int count0;do{//依次遍历当前 序列下 --》 x,y的情况for(int i1;i8;i){int x stoi(s.substr(0,i));int y stoi(s.substr(i));if(Is_Accord(x*y) true)count;}}while(next_permutation(s.begin(),s.end()));coutcount/2;return 0;
}总结 next_permutation -- 获取 该 字符串的 下一个 全排列包含在中依旧是 化繁为简 先考虑 其中一种情况再 推广到 整体因为 left,right 是 有对称重复的所有 算出来的值 要 /2
三最少刷题数
题目最少刷题数 思路 先创建一个 排好序的数组 --》 通过该数组 找到 第一个 合格的刷题数按要求打印即可 代码实现 #include iostream
#include algorithm
#include vector
using namespace std;int main() {// 请在此输入您的代码int n;cin n;vectorint v(n, 0);for (int i 0; i n; i)cin v[i];vectorint tem v;sort(tem.begin(), tem.end());int ans 0;int i 0;while (i n) { //找到 第一个 合格 刷题数int j i;//去除相等的个数while (j n tem[j] tem[i]) {j 1;}int right n - j; //找到左边 小于于的 个数int left i;if (left right){i j;continue;}else if (left right) { //找到了第一个 合格 刷题数ans tem[i];break;}else {ans tem[i] 1;break;}}for (int k 0; k n; k) {if (v[k] tem[i])cout 0 ;elsecout ans - v[k] ;}return 0;
}四山
题目: 山 思路 一定不能暴力求解会超时 我们可以 利用对称的 思想 假如123是单调不减的那么 肯定有 123321 和 12321 这两个数 满足 题目要求 所以我们可以分为 几种情况 代码实现 #include iostream
#includesstream
using namespace std;int Is_Rccord(int x) //判断是否符合
{string s to_string(x);int size s.size();int mid size/2;for(int i0;imid;i){if(s[i] ! s[size-1-i] || s[i] s[i1])return 0;}return 1;
}int Is_Increasing(int x) //对称的 只要判断是否递增 就好了
{string s to_string(x);for(int i0;is.size()-1;i){if(s[i] s[i1])return 0;}return 1;
}int main()
{// 请在此输入您的代码int ans0;for(int i2022;i9999;i)ans Is_Rccord(i);for(int i100;i99999;i) //奇数位 5 79ans Is_Increasing(i);for(int i100;i20222;i) //偶数位 6810ans Is_Increasing(i);coutans;return 0;
}总结 还是化繁为简 将大数的判断 --》 转换 为 对小数的 判断 --》 只要 有一个小数 满足 要求 --》 肯定会对应到 一个大数上
总结
今天的题目都不算难 主题是 化繁为简 --》 知道怎么样去 简化 这个题目 --》 你就离答案不远了 这是 蓝桥杯真题31日冲刺 的第一天 每天进步一点 相信 一个月后努力会给我们答案