【蓝桥杯】2020年十一届省赛大学B组真题(共10道题) c、c++解法 1.回文日期2.字串排序3.成绩统计4.平面切分5.门牌制作6.既约分数7.蛇形填数8.七段码9.跑步锻炼10.子串分值和 |
您所在的位置:网站首页 › 蓝桥杯多会儿出成绩 › 【蓝桥杯】2020年十一届省赛大学B组真题(共10道题) c、c++解法 1.回文日期2.字串排序3.成绩统计4.平面切分5.门牌制作6.既约分数7.蛇形填数8.七段码9.跑步锻炼10.子串分值和 |
目录 1.题目:回文日期 题目描述 输入描述 输出描述 输入输出样例 示例 1 示例 2 运行限制 题解: 2.题目:字串排序 题目描述 输入描述 输出描述 输入输出样例 示例 1 示例 2 运行限制 题解: 3.题目:成绩统计 题目描述 输入描述 输出描述 输入输出样例 示例 运行限制 题解: 4.题目:平面切分 题目描述 输入描述 输出描述 输入输出样例 示例 运行限制 题解: 5.题目:门牌制作 题目描述 运行限制 题解: 6.题目:既约分数 题目描述 运行限制 题解: 7.题目:蛇形填数 题目描述 运行限制 题解: 8.题目:七段码 题目描述 运行限制 题解: 1. 2. 9.题目:跑步锻炼 题目描述 运行限制 题解: 10.题目:子串分值和 题目描述 输入描述 输出描述 输入输出样例 示例 1 运行限制 题解: 1.题目:回文日期 题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存在的日期是回文的。 提示: 一个 8 位数字是回文的,当且仅当对于所有的 i (1≤i≤8)i (1≤i≤8) 从左向右数的第 ii 个数字和第 9 - ii 个数字(即从右向左数的第 ii 个数字)是相同的。 例如: 对于 2016 年 11 月 19 日,用 8 位数字 20161119 表示,它不是回文的。 对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。 对于 2010 年 10 月 2 日,用 8 位数字 20101002 表示,它不是回文的。 每一年中都有 12 个月份: 其中,1,3,5,7,8,10,12 月每个月有 31 天;4,6,9,11 月每个月有 30 天;而对于 2 月,闰年时有 29 天,平年时有 28 天。 一个年份是闰年当且仅当它满足下列两种情况其中的一种: 这个年份是 4 的整数倍,但不是 100 的整数倍; 这个年份是 400 的整数倍。 例如: 以下几个年份都是闰年:2000,2012,2016。 以下几个年份是平年:1900,2011,2014。 输入描述输入两行,每行包括一个 8 位数字。 第一行表示牛牛指定的起始日期。 第二行表示牛牛指定的终止日期。 保证 dateidatei 和都是真实存在的日期,且年份部分一定为 4 位数字,且首位数字不为 0。 保证 date1date1 一定不晚于 date2date2。 输出描述输出一个整数,表示在 date1date1 和 date2date2 之间,有多少个日期是回文的。 输入输出样例 示例 1输入 20110101 20111231输出 1 示例 2输入 20000101 20101231输出 2 运行限制 最大运行时间:1s最大运行内存: 256M 题解: #include #include int main(int argc, char *argv[]) { int a[]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int n,m; scanf("%d",&n); getchar(); scanf("%d",&m); int ans=0; //根据月份和天数直接构造回文年份,看是是否在题目要求范围内 for(int i=1;in; if(n==4)cout> V; //从1开始枚举长度,直到len可以产生的最大逆序对大于V for(int i = 1 ; ; i ++) { if(get_max(i) >= V) { len = i; break ; } } //构造字符串ans,从i开始枚举,枚举每个位置上的字母,字典序小 for(int i = 1 ; i a>>b; if(s.find({a,b}) != s.end()) // 完全相同的直线只能操作一次 continue; res++;// 每添加一条直线,平面数都得 +1 setjd;// 记录添加一条执行,它与平面内直线的交点(一个交点只能被统计一次) for(auto it = s.begin();it !=s.end();it++) { double x = (it->second - b)*1.0 / (a - it->first); // 计算交点的坐标值(x,y) double y = a*x+b; if(a != it->first && (jd.find({x,y})==jd.end() || jd.empty())) { res += 1; jd.insert({x,y}); } } s.insert({a,b}); } cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |