目录

1.比较

2.计算最小公倍数

3.比赛安排

4.潜伏者

5.P0702


1.比较

问题描述

给出一个n长的数列,再进行m次询问,每次询问询问两个区间[L1,R1],[L2,R2],
询问数列第L2到R2个数字每一个数在数列第L1到R1个数中有多少个数字不大于它。

输入格式

第一行两个整数n,m
第二行n个整数,表示数列。
接下来m行,每行四个整数L1,R1,L2,R2,意义如上

输出格式

m行,每行R2-L2+1个整数,第一个整数表示第L2个数在数列第L1到R1个数中不大于它的个数,第一个整数表示第L2+1个数在数列第L1到R1个数中不大于它的个数,以此类推

样例输入

5 3
5 2 3 4 1
1 2 3 4
2 3 1 5
1 5 2 3

样例输出

1 1
2 1 2 2 0
2 3

数据规模和约定

n,m<=1000,数列的数字非负且小于1000。

示例代码

#include<iostream>
#include<algorithm>
using namespace std;int main() {int n, m, l1, r1, l2, r2, a[1000];cin >> n >> m;for (int i = 0; i < n; i++) {cin >> a[i];}for (int i = 0; i < m; i++) {cin >> l1 >> r1 >> l2 >> r2;int b[1000], c[1000], d[1000], len1, len2;len1 = r1 - l1 + 1;len2 = r2 - l2 + 1;for (int j = 0; j < len1; j++) {//找到l1,r1之间的所有数,放到数组b里b[j] = a[l1 - 1 + j];//cout << b[j] << " ";}// cout << endl;for (int j = 0; j < len2; j++) {//找到l2,r2之间的所有数,放到数组c里c[j] = a[l2 - 1 + j];//cout << c[j] << " ";}//cout << endl;sort(b, b + len1);//b,c从小到大排序sort(c, c + len2);int index = 0;for (int j = 0; j < len2; j++) {//对数组c里的数挨个遍历while (c[j] >= b[index]) {//当找到大于等于c[j]的数,退出循环if (index == len1) {//如果c[j]大于b中所有数break;}index++;//比较下一个b中的数}d[c[j]] = index;//d[m]=n表示数字m的答案是n}for (int j = 0; j < len2; j++) {cout << d[a[l2 - 1 + j]] << " ";}cout << endl;}return 0;
}

2.计算最小公倍数

问题描述

接收用户输入的自然数m,n,计算它们的最小公倍数。

样例输入

4 6

样例输出

12

分析

最小公倍数 * 最大公约数=两个数的乘积

示例代码

#include<iostream>
using namespace std;
int gcd(int a, int b) {return b ? gcd(b, a % b) : a;
}int main() {int a, b;cin >> a >> b;int c = a * b / gcd(a, b);cout << c;return 0;
}

3.比赛安排

问题描述

设有2^n (n≤6)个球队进行单循环比赛,计划在2^n−1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2^n−1天内每个队都与不同的对手比赛。

输入格式

输入共一行,输入n的数值。

输出格式

输出共2^n−1行,第i行输出第i天的比赛安排。
格式为:<i>A-B C-D ……。其中i是天数,A,B分别为比赛双方的编号,每行共2^n−1个比赛场次。

样例输入

2

样例输出

<1>1-2 3-4
<2>1-3 2-4
<3>1-4 2-3

数据规模和约定

1<=n<=4

示例代码

#include<iostream>
using namespace std;
int flag[64][64], day[64];int main() {int n, temp = 1;cin >> n;for (int i = 0; i < n; i++) {temp *= 2;}for (int k = 1; k < temp; k++) {//天数cout << "<" << k << ">";for (int i = 0; i < temp; i++) {if (day[i] == 0) {//如果该球队当天还没打比赛for (int j = 0; j < temp; j++) {if (flag[i][j] == 0 && i != j && day[j] == 0) {//如果i队伍和j没打过比赛day[i] = 1;day[j] = 1;flag[i][j] = 1;cout << i + 1 << "-" << j + 1 << " ";break;}}}}cout << endl;for (int i = 0; i < temp; i++) {day[i] = 0;}}return 0;
}

4.潜伏者

问题描述

R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。
历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则:
1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符)。
2. S 国对于每个字母规定了对应的“密字”。加密的过程就是将原信息中的所有字母替换为其对应的“密字”。
3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”。“密字”可以和原字母相同。
例如,若规定‘A’的密字为‘A’,‘B’的密字为‘C’(其他字母及密字略),则原信息“ABA”被加密为“ACA”。
现在,小 C 通过内线掌握了 S 国网络上发送的一条加密信息及其对应的原信息。小 C希望能通过这条信息,破译 S 国的军用密码。小 C 的破译过程是这样的:扫描原信息,对于原信息中的字母 x(代表任一大写字母),找到其在加密信息中的对应大写字母 y,并认为在密码里 y 是 x 的密字。如此进行下去直到停止于如下的某个状态:
1. 所有信息扫描完毕,‘A’-‘Z’ 所有 26 个字母在原信息中均出现过并获得了相应的“密字”。
2. 所有信息扫描完毕,但发现存在某个(或某些)字母在原信息中没有出现。
3. 扫描中发现掌握的信息里有明显的自相矛盾或错误(违反 S 国密码的编码规则)。例如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。
在小 C 忙得头昏脑涨之际,R 国司令部又发来电报,要求他翻译另外一条从 S 国刚刚截取到的加密信息。现在请你帮助小 C:通过内线掌握的信息,尝试破译密码。然后利用破译的密码,翻译电报中的加密信息。

输入格式

输入文件名共 3 行,每行为一个长度在 1 到 100 之间的字符串。
第 1 行为小 C 掌握的一条加密信息。
第 2 行为第 1 行的加密信息所对应的原信息。
第 3 行为 R 国司令部要求小 C 翻译的加密信息。
输入数据保证所有字符串仅由大写字母‘A’-‘Z’构成,且第 1 行长度与第 2 行相等。

输出格式

输出文件共 1 行。
若破译密码停止时出现 2,3 两种情况,请你输出“Failed”(不含引号,注意首字母大写,其它小写)。
否则请输出利用密码翻译电报中加密信息后得到的原信息。

输入样例1

AA
AB
EOWIE

输出样例1

Failed

输入输出样例1说明

原信息中的字母‘A’和‘B’对应相同的密字,输出“Failed”。

输入样例2

QWERTYUIOPLKJHGFDSAZXCVBN
ABCDEFGHIJKLMNOPQRSTUVWXY
DSLIEWO

输出样例2

Failed

输入输出样例2说明

字母‘Z’在原信息中没有出现,输出“Failed”。

输入样例3

MSRTZCJKPFLQYVAWBINXUEDGHOOILSMIJFRCOPPQCEUNYDUMPP
YIZSDWAHLNOVFUCERKJXQMGTBPPKOIYKANZWPLLVWMQJFGQYLL
FLSO

输出样例3

NOIP

示例代码

#include<iostream>
using namespace std;int main() {string str1, str2, str3, str4, mima = "aaaaaaaaaaaaaaaaaaaaaaaaaa";int flag[26] = { 0 };cin >> str1 >> str2 >> str3;int len1 = str1.length();int len2 = str3.length();for (int i = 0; i < len1; i++) {if (mima[int(str1[i]) - 65] == 'a') {//如果该字符没有被配对过if (flag[str2[i]] == 1) {//如果是第三种情况cout << "Failed";return 0;}mima[int(str1[i]) - 65] = str2[i];flag[str2[i]] = 1;}else {if ((mima[int(str1[i]) - 65] != str2[i]) ) {//如果是第三种情况//cout << int(str1[i]) - 65<<"SSSSS"<<mima[int(str1[i]) - 65] << " " << str2[i] << endl;//cout << "第三种情况" << endl;cout << "Failed";return 0;}}}for (int i = 0; i < 26; i++) {if (mima[i] == 'a') {//如果是第二种情况//cout << "第二种情况" << endl;cout << "Failed";return 0;}}for (int i = 0; i < len2; i++) {cout << mima[int(str3[i] - 65)];}return 0;
}

5.P0702

问题描述

在C语言中,有一个strcmp函数,其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp,来实现strcmp函数的类似功能。如果s1=s2,则返回0;否则返回s1 与s2 第一个不同字符的差值(如果s1<s2,该差值是一个负数;如果s1>s2,该差值是一个正数)。编写测试程序,输入两个长度小于1000的字符串(可能包含有空格,且长度不一定相等),然后调用my_strcmp函数来进行比较,并输出返回结果。

样例输入

aBcDefgf
aacdef

样例输出

-31

示例代码

#include<iostream>
#include<string.h>
using namespace std;int my_strcmp(char s1[1000],char s2[1000]) {int len1 = strlen(s1);int len2 = strlen(s2);if (len1 < len2) {for (int i = 0; i < len1; i++) {if (s1[i] != s2[i]) {return int(s1[i]) - int(s2[i]);}}return -115;}else if(len1>len2){for (int i = 0; i < len2; i++) {if (s1[i] != s2[i]) {return int(s1[i]) - int(s2[i]);}}return 115;}else {for (int i = 0; i < len2; i++) {if (s1[i] != s2[i]) {return int(s1[i]) - int(s2[i]);}}}return 0;
}
int main() {char s1[1000], s2[1000];gets(s1);gets(s2);cout << my_strcmp(s1, s2);return 0;
}

蓝桥杯算法训练合集十二 1.比较2.计算最小公倍数3.比赛安排4.潜伏者5.P0702相关推荐

  1. 蓝桥杯算法训练合集十五 1.打翻的闹钟2.智斗锅鸡3.文件列表

    目录 1.打翻的闹钟 2.智斗锅鸡 3.文件列表 1.打翻的闹钟 问题描述 冯迭伊曼晚上刷吉米多维奇刷的太勤奋了,几乎天天迟到.崔神为了让VonDieEman改掉迟到的坏毛病,给他买了个闹钟. 一天早 ...

  2. 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵

    目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一 ...

  3. 蓝桥杯算法训练合集三 1.车的位置2.24点3.最大分解4.RP大冒险5.士兵杀敌(二)

    目录 1.车的位置(搜索) 2.24点(搜索) 3.最大分解(贪心) 4.RP大冒险 5.士兵杀敌(二) 1.车的位置(搜索) 问题描述 在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两 ...

  4. 蓝桥杯算法训练合集一 1.印章2.拿金币3.数字游戏4.无聊的逗5.礼物

    目录 1.印章(动态规划) 2.拿金币(动态规划) 3.数字游戏(搜索) 4.无聊的逗(状态搜索) 5.礼物(二分法和前缀和) 1.印章(动态规划) 问题描述 共有n种图案的印章,每种图案的出现概率相 ...

  5. 蓝桥杯算法训练合集八 1.数的划分2.求先序排列3.平方计算4.三角形高5.单词复数

    目录 1.数的划分 2.求先序排列 3.平方计算 4.三角形高 5.单词复数 1.数的划分 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种 ...

  6. 蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题

    目录 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题 1.p0802 问题描述 编写一个字符串表达式求解函数int expression(char* s); ...

  7. 蓝桥杯算法训练合集十七 1.数字反转2.试题39713.矮人采金子4.筛法5.机器指令

    目录 1.数字反转 2.试题3971 3.矮人采金子 4.筛法 5.机器指令 1.数字反转 问题描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为 ...

  8. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  9. 蓝桥杯算法训练 印章

    蓝桥杯 算法训练 印章 问题描述 ​ 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ​ 一行两个正整数n和m 输出格式 ​ 一个实数P表示答案,保 ...

最新文章

  1. python设计一个学生类求最高分_设计一个学生类班级类
  2. 将下图的nfa确定化为dfa_作业8 非确定的自动机NFA确定化为DFA
  3. linux web 共享文件夹,KodExplorer 3.2外链支持,文件夹共享,Web在线文件管理
  4. CentOS yum安装MySQL5.7.20
  5. Nginx_负载均衡配置讲解
  6. 在php中使用sockets:从新闻组中获取文章
  7. 1、【转载】Python yield 使用浅析
  8. Flask知识点查阅
  9. Comcast Xfinity家庭安全系统被曝严重漏洞
  10. 06Matplotlib数据可视化--6.1绘图基础
  11. SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名转...
  12. CentOS 6.6 nginx PHP 配置
  13. 三星android se,安卓小钢炮小米8 SE初体验!华为三星靠边站
  14. 软件质量需要静态代码分析和动态测试
  15. 将图片转化成RGB格式
  16. 移远M26,三分钟打通TCP流程,AT指令详解
  17. MAC电脑实现微信多开
  18. 抓取整个网站图片的爬虫
  19. iptables配置SNAT实现共享上网
  20. CentOS系统服务器加固,Centos7 安全加固

热门文章

  1. 交大计算机第四次作业答案,上海交大计算机网络第四次作业.doc
  2. 树莓派3B运行OP-TEE
  3. 怎么设置HTML的全景的图片,CSS3如何实现全景图
  4. 北斗词卡(三):带你了解北斗相关的国际组织缩写!
  5. 蓝桥杯 算法提高 ADV-222 7-2求arccos值
  6. ubuntu 系统备份 再生龙系统盘制作 系统备份与恢复(全图文)
  7. bes2300之led配置(三)
  8. pdf文件转jpg转换器
  9. 无人机摄影测量自动化刺点软件GCPMarker介绍
  10. Java正则表达式功能及应用(上)