当前位置: 首页 > news >正文

P8772 求和 P8716 回文日期

文章目录

  • [蓝桥杯 2022 省 A] 求和
  • [蓝桥杯 2020 省 AB2] 回文日期

[蓝桥杯 2022 省 A] 求和

题目描述

给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1,a2,,an, 求它们两两相乘再相加的和,即

S = a 1 ⋅ a 2 + a 1 ⋅ a 3 + ⋯ + a 1 ⋅ a n + a 2 ⋅ a 3 + ⋯ + a n − 2 ⋅ a n − 1 + a n − 2 ⋅ a n + a n − 1 ⋅ a n S=a_{1} \cdot a_{2}+a_{1} \cdot a_{3}+\cdots+a_{1} \cdot a_{n}+a_{2} \cdot a_{3}+\cdots+a_{n-2} \cdot a_{n-1}+a_{n-2} \cdot a_{n}+a_{n-1} \cdot a_{n} S=a1a2+a1a3++a1an+a2a3++an2an1+an2an+an1an

输入格式

输入的第一行包含一个整数 n n n

第二行包含 n n n 个整数 a 1 , a 2 , ⋯ a n a_{1}, a_{2}, \cdots a_{n} a1,a2,an

输出格式

输出一个整数 S S S,表示所求的和。请使用合适的数据类型进行运算。

样例 #1

样例输入 #1

4
1 3 6 9

样例输出 #1

117

提示

对于 30 % 30 \% 30% 的数据, 1 ≤ n ≤ 1000 , 1 ≤ a i ≤ 100 1 \leq n \leq 1000,1 \leq a_{i} \leq 100 1n1000,1ai100

对于所有评测用例, 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ 1000 1 \leq n \leq 2\times10^5,1 \leq a_{i} \leq 1000 1n2×105,1ai1000

蓝桥杯 2022 省赛 A 组 C 题。


解题思路

我们将公因数提取出来后,就可以转换成 a i a_{i} ai a i + 1 , a i + 2 , ⋯ , a n a_{i+1}, a_{i+2}, \cdots, a_{n} ai+1,ai+2,,an 的和的乘积,利用前缀和 && 差分 就可以解决了。

具体操作就是将 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1,a2,,an 的和 s u m sum sum 计算出来,每次与 a i a_{i} ai 相乘之前减去 a i a_{i} ai ,将得到的数累加起来就可以得到答案。

#include <bits/stdc++.h>
using namespace std;
long long sum,ans,nums[200005],n;int main()
{cin >> n;for(int i = 1; i <= n; ++i){cin >> nums[i];sum += nums[i];}for(int i = 1; i <= n; ++i){sum -= nums[i];ans += nums[i] * sum;}cout << ans << endl;return 0;
}

在这里插入图片描述

[蓝桥杯 2020 省 AB2] 回文日期

题目描述

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 yyyymmdd 的格式写成一个 8 8 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是“千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 100 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年12 月12 日。算不上“千年一遇”,顶多算“千年两遇”。

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

输入格式

输入包含一个八位整数 N N N,表示日期。

输出格式

输出两行,每行 1 1 1 个八位数。第一行表示下一个回文日期,第二行表示下
一个 ABABBABA 型的回文日期。

样例 #1

样例输入 #1

20200202

样例输出 #1

20211202
21211212

提示

对于所有评测用例, 10000101 ≤ N ≤ 92200229 10000101 \le N \le 92200229 10000101N92200229,保证 N N N 是一个合法日期的 8 8 8 位数表示。

蓝桥杯 2020 第二轮省赛 A 组 G 题(B 组 G 题)。


解题思路

我们直接从输入的日期 d a t e date date 开始枚举,检查该日期是否合法,在合法的情况下判断日期是否为回文日期,输出第一个回文日期和第一个 ABABBABA 型日期。

所以我们需要实现3个函数,检查日期是否合法check_date、判断日期是否是回文日期check1、判断日期是否是 ABABBABA 型回文日期check2

#include<bits/stdc++.h>
using namespace std;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//检查日期是否合法
bool check_date(int date)
{//分离年月日int d = date % 100;int m = date / 100 % 100;int y = date / 10000;//显而易见的不合法天数和月份if(d == 0 || m == 0 || m > 12) return false;//当月份不是2月时if(m != 2 && d > months[m]) return false;//月份是2月时要分是否是闰年来判断if(m == 2){if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) if(d > 29) return false;else if(d > 28) return false;}return true;
}//检查是否是回文日期
bool check1(string s)
{int i = 0, j = s.size() - 1;while(i < j){if(s[i++] != s[j--]) return false;}return true;
}//检查日期是否是 ABABBABA`型回文日期
bool check2(string s)
{if(check1(s)){if(s[0] != s[2] || s[1] != s[3] || s[0] == s[1]) return false;return true;}return false;
}int main()
{int date = 0;cin >> date;int cnt = 1;for(int i = date + 1; ;++i){//在日期合法的情况下寻找回文日期if(check_date(i)){//将日期转换成字符串来判断string s = to_string(i);//输出第一个回文日期if(cnt && check1(s)){cout << i << endl;cnt--;}//在输出完第一个回文日期后,再去寻找ABABBABA型日期if(!cnt && check2(s)){cout << i << endl;break;}}}return 0;
}

在这里插入图片描述


努力中…

遗憾总是贯穿人生始终的,只有不断前进,才能抓住人生中的一次两次机会,成就梦想荣获成功,加油!✨
请添加图片描述

http://www.lryc.cn/news/504016.html

相关文章:

  • MySQL迁移SQLite
  • RocketMQ中的顺序消息和乱序消息详解
  • Unity UGUI图片循环列表插件
  • Kafka系列教程 - Kafka 生产者 -2
  • AI Chat API 对接说明
  • Thread线程基础使用
  • 【Linux】结构化命令
  • ElasticSearch01-概述
  • docker xxxx is using its referenced image ea06665f255d
  • Vue 2 中 v-text 和 v-html 指令的使用详解
  • 高级Python游戏开发:创建一款多人对战坦克大战
  • 数据结构_拓扑排序
  • Edge SCDN 边缘安全加速有什么用?
  • 被狗咬住怎么让它松口?
  • MySQL迁移SQLite 借助PYTHON脚本
  • Python什么是动态调用方法?What is Dynamic Method Invocation? (中英双语)
  • Cesium中实现仿ArcGIS三维的动态图层加载方式
  • 数据冒险、控制冒险、结构冒险
  • TCA9555芯片手册解读(6)
  • NodeJs-fs模块
  • Transformer: Attention Is All You Need (2017) 翻译
  • 【记录】Django解决与VUE跨域问题
  • Java 常见Exception异常解决方法
  • 东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南
  • TIM输入捕获---STM
  • 【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?
  • MSF(Metasploit Framework)
  • Python中的OpenCV详解
  • IMX6ULL开发板学习嵌入式技术过程中为了测试本地网络是否正常而常用的Ping命令
  • Blue Ocean 在Jenkins上创建Pipeline使用详解