第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组2.0

A立方和

#include<iostream>
#include<cmath>
using namespace std;
int main(){int n, t, flag, x;long long ans = 0;for(int i = 1; i <= 2019; i++){t = i;flag = 0;while(t && !flag){x = t % 10;if(x == 2 || x == 0 || x == 1 || x == 9) flag = 1;t /= 10;}if(flag) ans += (long long)pow(i, 3);}printf("%lld", ans);//4097482414389return 0;
}

打卡题

B字串数字

#include<iostream>
#include<string>
using namespace std;
int main(){string s = "LANQIAO";
//	string s = "LQ";long long power = 1, ans = 0;for(int i = s.size() - 1; i >= 0; i--){ans += (s[i] - 'A' + 1) * power;power *= 26;}printf("%lld", ans);//3725573269return 0;
}

进制转换

C质数

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
bool isPrime(ll n){ll sqr = sqrt(n);for(int i = 2; i <= sqr; i++){if(n % i == 0) return false;}return true;
}
int main(){ll x = 2, cnt = 0, ans;while(cnt < 2019){if(isPrime(x)){cnt++;ans = x;}x++;}printf("%lld", ans);//17569return 0;
}

类似于质数打表

D最短路

6
在这里插入图片描述


适当手算,灵活些

E RSA解密

没思路
尝试先把p,q试出来

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int main(){ll n = 1001733993063167141LL, sqr = sqrt(n);for(ll i = 2; i <= sqr; i++){if(n % i == 0){printf("%lld ", i);if(i * i != n) printf("%lld ", n / i);}}return 0;
}

发现de % (p-1)(q-1)=1其实也就是求d的逆元,联想到用扩欧。
解密过程是快速幂的经典应用啦~

#include<iostream>
#include<cmath>
using namespace std;
typedef __int128 ll;ll exGcd(ll a, ll b, ll &x, ll &y){if(b == 0){x = 1;y = 0;return a;}int g = exGcd(b, a % b, x, y), temp = x;x = y;y = temp - a / b * y;return g;
}ll inverse(ll a, ll b){ll x, y;ll g = exGcd(a, b, x, y);if(g == 1) return (x % b + b) % b;else return -1;
}ll fastPow(ll a, ll b, ll m){//计算过程中会有超出long long的情况,故设置为__int128类型 if(b == 0) return 1;else if(b & 1) return a * fastPow(a, b - 1, m) % m;else{ll t = fastPow(a, b / 2, m);return t * t % m;}
}int main(){ll p = 891234941LL, q = 1123984201LL, d = 212353, n = 1001733993063167141LL, e, c = 20190324LL;ll t = (p - 1) * (q - 1);e = inverse(d, t);//de % t = 1 扩欧求d的逆元 printf("%lld", fastPow(c, e, n));//快速幂return 0;
}

F 斐波那契额序列与黄金分割

先打印前一百个观察下数据,发现大于等于19后在保留八位小数的基础上就稳定在一个比值,符合提示的趋近于黄金分割。而且当数值过大时,比值会出现负数的情况,显然异常。考虑可能是因为斐波那契额数列增长速度过快,超出了int型范围。才100就超了,给定的n范围更超,索性利用后续在规定的精度内稳定于一个比值,直接打印不再计算。

#include<iostream>
using namespace std;
typedef long long ll;
int main(){ll f1 = 1, f2 = 1, f, n;for(int i = 3; i <= 100; i++){f = f1 + f2;printf("%d %.8f\n", i - 1, 1.0 * f2 / f);f1 = f2;f2 = f;}return 0;
}

在这里插入图片描述
在这里插入图片描述
提交程序为

#include<iostream>
using namespace std;
typedef long long ll;
int main(){ll f1 = 1, f2 = 1, f, n;scanf("%lld", &n);if(n > 20) printf("0.61803399");else{for(int i = 3; i <= n + 1; i++){f = f1 + f2;if(i == n + 1)printf("%.8f", 1.0 * f2 / f);f1 = f2;f2 = f;}}return 0;
}

一个测试点没过,忽略了n==2的情况

#include<iostream>
using namespace std;
typedef long long ll;
int main(){ll f1 = 1, f2 = 1, f, n;scanf("%lld", &n);if(n > 20) printf("0.61803399");else{for(int i = 2; i < n + 1; i++){f = f1 + f2;f1 = f2;f2 = f;}printf("%.8f", 1.0 * f1 / f2);}return 0;
}

G扫地机器人

不知道如何下手


走廊长度n为105,根据数据范围需要选择nlogn以内的算法。花费时间最短2,最长2*n,考虑二分处理。
在花费时间t内,判断是否能够扫完n个格子。用贪心,尽量让机器人扫其周围的格子且平均得划分。把机器人的位置升序排序,看机器人在时间t内,能够覆盖的右边界能否相互衔接上且最后一个机器人能够覆盖到走廊有边界。

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1e5 + 10;
int a[maxn], n, k, l, r, mid;bool judge(int len){int r = 0;//上一个机器人能扫到的右边界for(int i = 0; i < k; i++){if(a[i] - len > r) return false;//不能衔接上,有覆盖不到的区域,则不可行else{if(a[i] < r) r = a[i] + len - 1;//在上一个机器人可覆盖的区域内else r += len;//在边界上 } }return r >= n; 
}int main(){scanf("%d%d", &n, &k);for(int i = 0; i < k; i++){scanf("%d", a + i);}sort(a, a + k);l = 0;r = n;while(l < r){mid = (l + r) / 2;if(judge(mid)) r = mid;//当前可行,尝试更短 else l = mid + 1;	//当前不可行,增加时间 }printf("%d", 2 * (l - 1)); return 0;
}

H修改数组

#include<iostream>
using namespace std;
const int maxn = 1e5 + 10, maxv = 1e6 + 1e5;
int a[maxn], flag[maxv] = {0};
int main(){int n;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", a + i);if(!flag[a[i]]) flag[a[i]] = 1;else {a[i] += flag[a[i]];while(flag[a[i]]) a[i]++;flag[a[i]]++;}}for(int i = 0; i < n; i++){printf("%d ", a[i]);}return 0;
}

两个测试点超时
没有充分利用flag的出现次数,还是一个个的跳且没有正确累加后续的出现次数

#include<iostream>
using namespace std;
const int maxn = 1e5 + 10, maxv = 1e6 + 1e5;
int a[maxn], flag[maxv] = {0};
int main(){int n, t;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", a + i);while(flag[a[i]]){t = a[i];a[i] += flag[t];flag[t]++;}flag[a[i]] = 1;}for(int i = 0; i < n; i++){printf("%d ", a[i]);}return 0;
}

I 灵能传输

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 3e5 + 10;
int a[maxn];
int main(){int t, n, flag, x, p, temp;scanf("%d", &t);while(t--){scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", a + i);}flag = 1;while(flag){x = abs(a[0]);p = 0;for(int i = 1; i < n; i++){if(abs(a[i]) > x){x = abs(a[i]);p = i;}}if(x == 0) flag = 1;if(p == 0) p++;else if(p == n - 1) p--;temp = max(max(abs(a[p - 1] + a[p]), abs(a[p + 1] + a[p])), abs(a[p]));if(temp >= x) flag = 0;else{a[p - 1] += a[p];a[p + 1] += a[p];a[p] = -a[p];}}printf("%d\n", x);}return 0;
} 

骗了四个测试点的分。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){int n, t;scanf("%d", &t);while(t--){ll x, ansX = 0;scanf("%d", &n);vector<ll> sum(n + 1, 0);vector<ll> visit(n + 1, 0);vector<ll> ans(n + 1, 0); for(int i = 1; i <= n; i++){scanf("%lld", &x);sum[i] = sum[i - 1] + x;}ll l = sum[0], r = sum[n], lp = 0, rp = n, ansL = 0, ansR = n;//首位项的值if(l > r) swap(l, r);sort(sum.begin(), sum.end());for(int i = 0; i < n; i++){if(sum[i] == l){lp = i;break;}}for(int i = 0; i < n; i++){if(sum[i] == r){rp = i;break;}}for(int i = rp; i <= n; i += 2){//填充结果数组 ans[ansR--] = sum[i];visit[i] = 1; }for(int i = lp; i >= 0; i -= 2){ans[ansL++] = sum[i];visit[i] = 1;}for(int i = 0; i <= n; i++){if(!visit[i]) ans[ansL++] = sum[i];}for(int i = 1; i <= n; i++){if(abs(ans[i] - ans[i - 1]) > ansX) ansX = abs(ans[i] - ans[i - 1]);}printf("%lld\n", ansX);}return 0;
}

J空间跳跃

题干看起来好麻烦,蒟蒻不想做了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名过期时间怎么计算?

域名是互联网上的重要标识&#xff0c;它帮助用户快速找到并访问特定的网站。为了维护域名的正常运行和避免不必要的麻烦&#xff0c;了解域名过期时间的计算和管理方式至关重要。 首先我们先来了解一下域名的各种状态及域名注册与删除周期。 通常情况下&#xff0c;英文国际域…

流媒体的安全谁来保障

流媒体的安全谁来保障 说起媒体&#xff0c;我们马上就会想到报纸新闻、广播、电视。 其实所谓的流媒体同我们通常所指的媒体是不一样的&#xff0c; 它只是一个技术名词。流媒体到底是什么&#xff1f;能给我们的生活带来什么&#xff1f;跟小德一起来看看。 流媒体是什么&a…

大数据基本名词

目录[-] 1.1. 1. Hadoop1.2. 2. Hive1.3. 3. Impala1.4. 4. Hbase1.5. 5.hadoop hive impala hbase关系1.6. 6. Spark1.7. 7. Flink1.8. 8. Spark 和 Flink 的应用场景 1. Hadoop 开源官网&#xff1a;https://hadoop.apache.org/ Hadoop是一个由Apache基金会所开发的分…

使用Android完成案例教学

目录 题目&#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发。&#xff08;全代码解析&#xff09; 题目&#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞…

解决unbuntu更新到23.10 mantic firefox无法使用的问题

产看历史版本号&#xff1a; 升级到最新版本后查看&#xff1a; roottesthost01:/home/test/Desktop# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 23.10 Release: 23.10 Codename: mantic 打开firefox发现图标找…

【教程】四种方法将App打包为IPA文件类型

摘要 本教程总结了将App应用程序打包为IPA包的四种常用方法&#xff0c;包括Apple推荐的方式、iTunes拖入方法、自动编译脚本和解压改后缀名方法。每种方法都有其特点和适用场景&#xff0c;在实际开发中可以根据需求选择合适的方式进行打包。通过本教程&#xff0c;您将了解到…

从零开始学Spring Boot系列-集成MyBatis-Plus

在Spring Boot应用开发中&#xff0c;MyBatis-Plus是一个强大且易于使用的MyBatis增强工具&#xff0c;它提供了很多实用的功能&#xff0c;如代码生成器、条件构造器、分页插件等&#xff0c;极大地简化了MyBatis的使用和配置。本篇文章将指导大家如何在Spring Boot项目中集成…

【C语言】函数递归编程题

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 总结 题目一&#xff1a; 题目&#xff1a;接受一个整型值&#xff08;无符号&#xff09;&#xff0c;按照顺序打印它的每一位。&#xff08;递归完成&#xff09; 列如&#xff1a; …

探索 ChatGPT:解读 AI 对话的魔力(文末推荐一款AI工具聚合平台,可免费体验)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;个人主页&#xff1a;hacker707的csdn博客 &#x1f4ac;推荐一款AI工具聚合平台&#x1f449;Hulu AI 探索 ChatGPT&#xff1a;解读 AI 对话的魔力 ChatGPT 的魅力如何使用 C…

JVM修炼之路【10】- 垃圾回收器和垃圾回收算法

垃圾回收算法 我们先简要看一下 四种主要的垃圾回收算法 看到这不禁感慨一下 人家1960年 都搞出GC算法了 太强了 评价标准 既然有这么多算法 那就跟各个牌子的游戏本一样 有个比较&#xff0c;这里我们重点介绍一下 垃圾回收算法的评价标准 这几个标准非常重要是 是后面理解很…

springCloudAlibaba集成sentinel实战(超详细)

一、Sentinel介绍 1. 什么是Sentinel Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 分布式系统的流量防卫兵&#xff1a; 随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流…

你知道 Java 线程池的原理吗?

Java线程池是用于管理和复用线程的机制&#xff0c;它可以帮助开发者有效地管理线程的生命周期和资源&#xff0c;并提高应用程序的性能和稳定性。 1. 线程池概述 在计算机科学中&#xff0c;线程池是一种可用来执行异步任务的线程队列。它主要包含以下几个组成部分&#xff…

python连接mysql数据库并将dataframe的数据插入表中

代码中连接的sql表为"20230411_hangzhuanlie"&#xff0c;表结构如下&#xff1a; 代码如下&#xff08;按需修改用户名、库名等即可&#xff09;&#xff1a; import pymysql import pandas as pd from sqlalchemy import create_enginehost 127.0.0.1:3306/ user_…

一、OpenMIPS指令集CPU的ori指令的实现

前言 根据“自己动手写CPU”这本书学习&#xff0c;自己动手实现一个MIPS指令集的CPU。 本文章实现了一个ori指令即“或”操作的五级流水线&#xff0c;后续会持续添加其他指令完善此CPU。 文章作为学习笔记持续更新&#xff0c;源代码也在github上持续更新 项目源码https://…

头歌-机器学习 第1次实验 Python机器学习软件包Scikit-Learn的学习与运用

第1关&#xff1a;使用scikit-learn导入数据集 scikit-learn包括一些标准数据集&#xff0c;不需要从外部下载&#xff0c;可直接导入使用&#xff0c;比如与分类问题相关的Iris数据集和digits手写图像数据集&#xff0c;与回归问题相关的波士顿房价数据集。 以下列举一些简单…

JAVA面试八股文之数据库

MySQL面试题 MySQL 存储引擎架构了解吗&#xff1f;CHAR 和 VARCHAR 的区别是什么&#xff1f;索引是越多越好嘛&#xff1f;MySQL数据库中空值&#xff08;null&#xff09;和空字符串&#xff08;&#xff09;的区别&#xff1f;SQL 中 on 条件与 where 条件的区别&#xff1…

面试算法-171-翻转二叉树

题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 解 class Solution {public TreeNode invertTree(TreeNode root) {if (root n…

腾讯云4核8G服务器多少钱?4核8G能干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

前端代码优化--computed

随便记录一下 主要是通过计算属性来简化和优化代码。在 Vue 中&#xff0c;计算属性是一种方便的工具&#xff0c;可以让你根据依赖状态的变化来动态计算衍生值。在这个例子中&#xff0c;我们使用计算属性 formattedCommunicationType 来根据 workDetail.realTimeItemDeviceDT…

openlayer实现webgis端绘制制图及编辑

在WebGIS端制图是指通过Web浏览器界面实现地理信息数据的可视化、编辑、分析以及地图产品的制作。这一过程通常涉及以下几个关键环节&#xff1a; **1. 前端技术栈&#xff1a; •HTML/CSS/JavaScript&#xff1a;作为Web开发的基础&#xff0c;用于构建用户界面布局、样式设…