个人网站可以做社区吗,镇江市建设工程网站,广告设计图片大全 模板,中信建设网站文章目录 [蓝桥杯 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, 求它们两两相乘再相加的和#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a… 文章目录 [蓝桥杯 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 Sa_{1} \cdot a_{2}a_{1} \cdot a_{3}\cdotsa_{1} \cdot a_{n}a_{2} \cdot a_{3}\cdotsa_{n-2} \cdot a_{n-1}a_{n-2} \cdot a_{n}a_{n-1} \cdot a_{n} Sa1⋅a2a1⋅a3⋯a1⋅ana2⋅a3⋯an−2⋅an−1an−2⋅anan−1⋅an
输入格式
输入的第一行包含一个整数 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 1≤n≤1000,1≤ai≤100 。
对于所有评测用例, 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ 1000 1 \leq n \leq 2\times10^5,1 \leq a_{i} \leq 1000 1≤n≤2×105,1≤ai≤1000 。
蓝桥杯 2022 省赛 A 组 C 题。 解题思路
我们将公因数提取出来后就可以转换成 a i a_{i} ai 与 a i 1 , a i 2 , ⋯ , a n a_{i1}, a_{i2}, \cdots, a_{n} ai1,ai2,⋯,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 10000101≤N≤92200229保证 N N N 是一个合法日期的 8 8 8 位数表示。
蓝桥杯 2020 第二轮省赛 A 组 G 题B 组 G 题。 解题思路
我们直接从输入的日期 d a t e date date 开始枚举检查该日期是否合法在合法的情况下判断日期是否为回文日期输出第一个回文日期和第一个 ABABBABA 型日期。
所以我们需要实现3个函数检查日期是否合法check_date、判断日期是否是回文日期check1、判断日期是否是 ABABBABA 型回文日期check2。
#includebits/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;
}努力中…
遗憾总是贯穿人生始终的只有不断前进才能抓住人生中的一次两次机会成就梦想荣获成功加油✨