桐城市建设局网站,网站创意策划案,wordpress md主题,企业风首页中文官网模板目录
连号区间数#xff08;第四届蓝桥杯省赛CB组,第四届蓝桥杯省赛JAVAB组#xff09;
递增三元组#xff08;第九届蓝桥杯省赛CB组,第九届蓝桥杯省赛JAVAB组#xff09;
特别数的和#xff08;第十届蓝桥杯省赛CB组,第十届蓝桥杯省赛JAVAB组#xff09; 错误票据第四届蓝桥杯省赛CB组,第四届蓝桥杯省赛JAVAB组
递增三元组第九届蓝桥杯省赛CB组,第九届蓝桥杯省赛JAVAB组
特别数的和第十届蓝桥杯省赛CB组,第十届蓝桥杯省赛JAVAB组 错误票据第四届蓝桥杯省赛CA/B组,第四届蓝桥杯省赛JAVAA/B组
回文日期 连号区间数第四届蓝桥杯省赛CB组,第四届蓝桥杯省赛JAVAB组
小明这些天一直在思考这样一个奇怪而有趣的问题
在 1∼N1∼N 的某个排列中有多少个连号区间呢
这里所说的连号区间的定义是
如果区间 [L,R][L,R] 里的所有元素即此排列的第 LL 个到第 RR 个元素递增排序后能得到一个长度为 R−L1R−L1 的“连续”数列则称这个区间连号区间。
当 NN 很小的时候小明可以很快地算出答案但是当 NN 变大的时候问题就不是那么简单了现在小明需要你的帮助。
输入格式
第一行是一个正整数 NN表示排列的规模。
第二行是 NN 个不同的数字 PiPi表示这 NN 个数字的某一排列。
输出格式
输出一个整数表示不同连号区间的数目。
数据范围
1≤N≤100001≤N≤10000, 1≤Pi≤N1≤Pi≤N
输入样例1
4
3 2 4 1输出样例1
7输入样例2
5
3 4 2 5 1输出样例2
9样例解释
第一个用例中有 77 个连号区间分别是[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4][1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4] 第二个用例中有 99 个连号区间分别是[1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[3,3],[4,4],[5,5]
#include iostream
#include cstring
#include algorithm
using namespace std;const int N 10010;
int a[N];
int main()
{int n;cinn;int ans0;int r0,l10010;for (int i 1; i n; i )cina[i];for(int i1;in;i){r0,l10010;for(int ji;jn;j){lmin(l,a[i]);rmax(r,a[j]);if(()(r-l))ans;}}coutansendl;return 0;
}
递增三元组第九届蓝桥杯省赛CB组,第九届蓝桥杯省赛JAVAB组
给定三个整数数组
A[A1,A2,…AN]A[A1,A2,…AN], B[B1,B2,…BN]B[B1,B2,…BN], C[C1,C2,…CN]C[C1,C2,…CN],
请你统计有多少个三元组 (i,j,k)(i,j,k) 满足
1≤i,j,k≤N1≤i,j,k≤NAiBjCkAiBjCk
输入格式
第一行包含一个整数 NN。
第二行包含 NN 个整数 A1,A2,…ANA1,A2,…AN。
第三行包含 NN 个整数 B1,B2,…BNB1,B2,…BN。
第四行包含 NN 个整数 C1,C2,…CNC1,C2,…CN。
输出格式
一个整数表示答案。
数据范围
1≤N≤1051≤N≤105, 0≤Ai,Bi,Ci≤1050≤Ai,Bi,Ci≤105
输入样例
3
1 1 1
2 2 2
3 3 3输出样例
27
#include iostream
#include cstring
#include algorithm
using namespace std;const int N 1e510;
int a[N],b[N],c[N],x[N];
int n;
int main()
{cin n;for (int i 1; i n; i )cina[i];for (int i 1; i n; i )cinb[i];for (int i 1; i n; i )cinc[i];for(int i1;in;i){int t0;for(int j1;jn;j){if(b[i]a[j])t;}x[i]t;}int ans0;for(int i1;in;i){for(int j1;jn;j){if(c[i]b[j])ansx[j];}}coutansendl;return 0;}
特别数的和第十届蓝桥杯省赛CB组,第十届蓝桥杯省赛JAVAB组
小明对数位中含有 2、0、1、92、0、1、9 的数字很感兴趣不包括前导 00在 11 到 4040 中这样的数包括 1、2、9、101、2、9、10 至 32、3932、39 和 4040共 2828 个他们的和是 574574。
请问在 11 到 nn 中所有这样的数的和是多少
输入格式
共一行包含一个整数 nn。
输出格式
共一行包含一个整数表示满足条件的数的和。
数据范围
1≤n≤100001≤n≤10000
输入样例
40输出样例
574
#include iostream
#include cstring
#include algorithm
using namespace std;
int check(int i)
{while(i){int ti%10;if(t0||t1||t2||t9)return true;i/10;}return false;
}
int main()
{int n,ans0;cinn;for(int i1;in;i)if(check(i))ansi;coutansendl;return 0;
} 错误票据第四届蓝桥杯省赛CA/B组,第四届蓝桥杯省赛JAVAA/B组
某涉密单位下发了某种票据并要在年终全部收回。
每张票据有唯一的ID号。
全年所有票据的ID号是连续的但ID的开始数码是随机选定的。
因为工作人员疏忽在录入ID号的时候发生了一处错误造成了某个ID断号另外一个ID重号。
你的任务是通过编程找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
输入格式
第一行包含整数 NN表示后面共有 NN 行数据。
接下来 NN 行每行包含空格分开的若干个不大于100个正整数不大于100000每个整数代表一个ID号。
输出格式
要求程序输出1行含两个整数 m,nm,n用空格分隔。
其中mm表示断号IDnn表示重号ID。
数据范围
1≤N≤1001≤N≤100
输入样例
2
5 6 8 11 9
10 12 9输出样例
7 9
#includeiostream
#includealgorithm
#include vector
using namespace std;
const int N105;
vectorinta;
int main()
{int m-1,n-1,k0;cink;while(k--){cinm}for(int i0;ik;i)cina[i];sort(a,ak);for(int i0;ik;i)couta[i]endl;for(int i0;ik-1;i){if(a[i]a[i1])na[i];if((a[i]!a[i1])(a[i1]-a[i]!1))ma[i];}coutm nendl;return 0;
}
回文日期
在日常生活中通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用 88 位数字表示一个日期其中前 44 位代表年份接下来 22 位代表月份最后 22 位代表日期。
显然一个日期只有一种表示方法而两个不同的日期的表示方法不会相同。
牛牛认为一个日期是回文的当且仅当表示这个日期的 88 位数字是回文的。
现在牛牛想知道在他指定的两个日期之间包含这两个日期本身有多少个真实存在的日期是回文的。
一个 88 位数字是回文的当且仅当对于所有的 ii(1≤i≤81≤i≤8) 从左向右数的第 ii 个数字和第 9−i9−i 个数字即从右向左数的第 ii 个数字是相同的。
例如
对于 20162016 年 1111 月 1919 日用 88 位数字 2016111920161119 表示它不是回文的。对于 20102010 年 11 月 22 日用 88 位数字 2010010220100102 表示它是回文的。对于 20102010 年 1010 月 22 日用 88 位数字 2010100220101002 表示它不是回文的。
输入格式
输入包括两行每行包括一个 88 位数字。
第一行表示牛牛指定的起始日期 date1date1第二行表示牛牛指定的终止日期 date2date2。保证 date1date1 和 date2date2 都是真实存在的日期且年份部分一定为 44 位数字且首位数字不为 00。
保证 date1date1 一定不晚于 date2date2。
输出格式
输出共一行包含一个整数表示在 date1date1 和 date2date2 之间有多少个日期是回文的。
输入样例
20110101
20111231输出样例
1
#include iostream
#include cstring
#include algorithm
using namespace std;
int month[13]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check(int data)
{int ydata/10000;int mdata%10000/100;int ddata%100;if(m0||m12)return false;if(d0||m!2dmonth[m])return false;if(m2){bool leap((y%4000)||(y%100!0y%40));if(leaptrued29)return false;if(leapfalsed28)return false;}return true;
}
int main()
{int d1,d2;cind1d2;int ans0;for(int i1000;i100000;i){int datai,xi;for(int i0;i4;i)datadata*10x%10,x/10;if(d1datadatad2check(data))ans;}coutansendl;return 0;
}