cspccf备考

13年12月CCF计算机软件能力认证

3192. 出现次数最多的数

给定 n n n个正整数,找出它们中出现次数最多的数。
如果这样的数有多个,请输出其中最小的一个。

输入格式

输入的第一行只有一个正整数 n n n,表示数字的个数。
输入的第二行有 n n n个整数 s 1 , s 2 , … , s n s_1,s_2,\ldots,s_n s1,s2,,sn
相邻的数用空格分隔。

输出格式

输出这 n n n个次数中出现次数最多的数。
如果这样的数有多个,输出其中最小的一个。

数据范围

1 ≤ n ≤ 1000 , 1 ≤ s i ≤ 10000 \begin{aligned}&1\leq n\leq1000,\\&1\leq s_i\leq10000\end{aligned} 1n1000,1si10000

输入样例:

6
10110203020

输出样例:

10

}

数组模拟

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int c[N];
int n;
int mx = 1e5 + 10, cnt;

int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n;
    while (n -- )
    {
        int x;
        cin >> x;
        c[x] ++;
        if(c[x] > cnt)
        {
            cnt = c[x];
            mx = x;
        }
        if(c[x] == cnt && x < mx)
            mx = x;
    }
    cout << mx << endl;
    return 0;
}

Map

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int mx = N, cnt;
int n;
map<int, int> mp;

int main()
{
    cin >> n;
    while (n -- )
    {
        int x;
        cin >> x;
        mp[x] ++;
        if(mp[x] > cnt)
        {
            cnt = mp[x];
            mx = x;
        }
        if(mp[x] == cnt && x < mx)
            mx = x;
    }
    cout << mx << endl;
    return 0;
}

3193. ISBN号码

每一本正式出版的图书都有一个 ISBN 号码与之对应。
ISBN 码包括9位数字、1位识别码和3位分隔符,其规定格式如 x-xxx-xxxxx-x ,其中符号 - 是分隔符 (键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的ISBN码。
ISBN 码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符 - 之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2…以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 X . X. X.
例如ISBN 号码 0-670-82162-4 中的识别码4是这样得到的:对067082162这 9 个数字,从左至右,分别乘以
1 , 2 , … , 9 1,2,\ldots,9 1,2,,9,再求和,即 0 × 1 + 6 × 2 + … … + 2 × 9 = 158 0\times1+6\times2+\ldots\ldots+2\times9=158 0×1+6×2+……+2×9=158,然后取158 mod 11的结果 4 作为识别码。
编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 Right;如果错误,则输出是正确的ISBN 号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的 ISBN 号码 (保证输入符合 ISBN 号码的格式要求)。
输出格式
输出一行,假如输入的ISBN 号码的识别码正确,那么输出 Right,否则,按照规定的格式,输出正确的 ISBN号码(包括分隔符 -)。
输入样例1:

0-670-82162-4

输出样例1:

Right

输入样例2:

0-670-82162-0

输出样例2:

0-670-82162-4

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    cin >> s;
    for(int i = 0; i < s.size(); i ++)
        if(s[i] == '-')
            s.erase(i, 1);

    int res = 0;
    for(int i = 0; i < s.size() - 1; i ++)
        res += (s[i] - '0') * (i + 1);
    
    int m = res % 11;
    if(m == s[s.size() - 1] - '0')
        cout << "Right" << endl;
    else if(m == 10 && s[s.size() - 1] == 'X')
        cout << "Right" << endl;
    else
    {
        for(int i = 0; i < s.size() - 1; i ++)
        {
            cout << s[i];
            if(i == 0 || i == 3 || i == 8)
                cout << '-';
        }
        if(m == 10)
            cout << 'X';
        else
            cout << m;            
    }
    return 0;
}

3194. 最大的矩形

在横轴上放了 n n n个相邻的矩形,每个矩形的宽度是1,而第 i i i ( 1 ≤ i ≤ n 1\leq i\leq n 1in)个矩形的高度是 h i h_i hi
n n n个矩形构成了一个直方图。
例如,下图中六个矩形的高度就分别是3,1,6,5,2,3.

请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。

输入格式

第一行包含一个整数 n n n,即矩形的数量。
第二行包含 n n n个整数 h 1 , h 2 , … , h n h_1,h_2,\ldots,h_n h1,h2,,hn ,相邻的数之间由空格分隔。 h i h_i hi是第 i i i个矩形的高度。
输出格式
输出一行,包含一个整数,即给定直方图内的最大矩形的面积。

数据范围

1 ≤ n ≤ 1000 1\leq n\leq1000 1n1000, 1 ≤ h i ≤ 10000 1\leq h_i\leq10000 1hi10000 经实测 h i h_i hi在官网的实际范围是 1 ≤ h i ≤ 40000 1\leq h_i\leq40000 1hi40000,这与其给出的题面描述不符,属于官网出题人的失误,也因此卡住了一些同学的代码,望大家加以注意。

输入样例:

6
3 1 6 5 2 3

输出样例:

10
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int h[N];
int n;
int res;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i ++)
        cin >> h[i];
    
    for(int i = 1; i <= n; i ++)
    {
        int l, r;
        for(int j = i; j >=1; j --)
        {
            if(h[i] > h[j]) break;
            l = j;
        }
        for(int j = i; j <= n; j ++)
        {
            if(h[i] > h[j]) break;
            r = j;
        }
        res = max(res, h[i] * (r - l + 1));
    }
    cout << res << endl;
    return 0;
}

3195. 有趣的数

我们把一个数称为有趣的,当且仅当:

1.它的数字只包含0,1,2,3 ,且这四个数字都出现过至少一次。

2.所有的0都出现在所有的 1 之前,而所有的2都出现在所有的 3 之前。

3.最高位数字不为0。

因此,符合我们定义的最小的有趣的数是 2013

除此以外,4位的有趣的数还有两个:2031 和2301。

请计算恰好有 n n n位的有趣的数的个数。

由于答案可能非常大,只需要输出答案除以 1 0 9 + 7 10^9+7 109+7的余数。

输入格式

输入只有一行,包括恰好一个正整数 n n n

输出格式

输出只有一行,包括恰好 n n n位的整数中有趣的数的个数除以 1 0 9 + 7 10^9+7 109+7的余数。

数据范围
4 ≤ n ≤ 1000 4\leq n\leq1000 4n1000
输入样例:

4

输出样例:

3

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1010, mod = 1e9 + 7;
int n, c[N][N];
LL res;

int main()
{
    cin >> n;
    for(int i = 0; i <= n; i ++)
        for(int j = 0; j <= i; j ++)
            if(!j) c[i][j] = 1;
            else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
    
    for(int k = 2; k <= n - 2; k ++)
        res = (res + (LL)c[n - 1][k] * (k - 1) * (n - k - 1)) % mod;
    
    cout << res << endl;
    return 0;
}

3196. I’m stuck!

给定一个 R R R C C C列的地图,地图的每一个方格可能是 #,+,-,1,.,s,T 七个字符中的一个,分别表

示如下意思:

# : \#: #:任何时候玩家都不能移动到此方格;
· + :当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非 # 方格移动一格;
· - :当玩家到达这一方格后,下一步可以向左右两个方向相邻的一个非 # 方格移动一格; · |!当玩家到达这一方格后,下一步可以向上下两个方向相邻的一个非 # 方格移动一格; ····当玩家到达这一方格后,下一步只能向下移动一格。如果下面相邻的方格为 #,则玩家不能再移动;
· S:玩家的初始位置,地图中只会有一个初始位置。玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非#方格移动一格;

· T:玩家的目标位置,地图中只会有一个目标位置。玩家到达这一方格后,可以选择完成任务,也可以选择不完成任务继续移动。如果继续移动下一步可以向上下左右四个方向相邻的任意一个非 # 方格移动一格。

此外,玩家不能移动出地图。

请找出满足下面两个性质的方格个数:

玩家可以从初始位置移动到此方格; 2.玩家不可以从此方格移动到目标位置。

输入格式

输入的第一行包括两个整数 R R R C C C,分别表示地图的行和列数
接下来的 R R R行每行都包含 C C C个字符。它们表示地图的格子。地图上恰好有一个 s 和一个 T。
输出格式
如果玩家在初始位置就已经不能到达终点了,就输出 I’m stuck! 。
否则的话,输出满足性质的方格的个数。

数据范围
1 ≤ R , C ≤ 50 1\leq R,C\leq50 1R,C50
输入样例:

55

–±+

… ∣ # . \ldots|_{\#}. #.

… ∣ # # \ldots|_{\#\#} ##

s − + − T s-+-T s+T

# # # # . \#\#\#\#. ####.

输出样例:

2

样例解释

如果把满足性质的方格在地图上用 x 标记出来的话,地图如下所示:

–±+

… ∣ # X \ldots|\#X ∣#X

… ∣ # # \ldots|_{\#\#} ##

S − + − T S-+-T S+T

# # # # X \#\#\#\#X ####X

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 55;
int n, m;
int st1[N][N], st2[N][N];
char g[N][N];
int tx, ty;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0 , -1};
int res;

bool check(int x, int y, int k)
{
    char c = g[x][y];
    if(c == '+' || c == 'S' || c == 'T') return true;
    if(c == '|' && k % 2 == 0) return true;
    if(c == '-' && k % 2 == 1) return true;
    if(c == '.' && k == 2) return true;
    return false;
}

void dfs1(int x, int y)
{
    st1[x][y] = true;
    for(int i = 0; i < 4; i ++)
    {
        int a = x + dx[i], b = y + dy[i];
        if(a < 0 || a >= n || b < 0 || b >= m || g[a][b] == '#' || st1[a][b]) continue;
        if(check(x, y, i))
            dfs1(a, b);
    }
}

void dfs2(int x, int y)
{
    st2[x][y] = true;
    for(int i = 0; i < 4; i ++)
    {
        int a = x + dx[i], b = y + dy[i];
        if(a < 0 || a >= n || b < 0 || b >= m || g[a][b] == '#' || st2[a][b]) continue;
        if(check(a, b, i ^ 2))
            dfs2(a, b);
    }
}

int main()
{
    cin >> n >> m;
    for(int i = 0; i < n; i ++) cin >> g[i];
    
    for(int i = 0; i < n; i ++)
    {
        for(int j = 0; j < m; j ++)
        {
            if(g[i][j] == 'S') dfs1(i, j);
            else if(g[i][j] == 'T')
            {
                tx = i, ty = j;
                dfs2(i, j);
            }
        }
    }
    
    if(!st1[tx][ty])
        cout << "I'm stuck!" << endl;
    else
    {
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < m; j ++)
                if(st1[i][j] && !st2[i][j])
                    res ++;
        cout << res << endl;
    }
    return 0;
}

第一次CCF计算机软件能力认证

3197. 相反数

输入格式

N N N个非零且各不相同的整数。
请你编一个程序求出它们中有多少对相反数( a a a − a -a a为一对相反数)。
第一行包含一个正整数 N N N
第二行为 N N N个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
输出格式
只输出一个整数,即这 N N N个数中包含多少对相反数。

数据范围
1 ≤ N ≤ 500 1\leq N\leq500 1N500
输入样例:

5

123-1-2

输出样例:

2

#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
set<int> s;
bool st[N];
int n;
int cnt;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i ++)
    {
        int x;
        cin >> x;
        s.insert(x);
        if(s.count(-x) && !st[abs(x)])
        {
            st[abs(x)] = true;
            cnt ++;
        }
    }
    cout << cnt << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/706525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是基于风险的漏洞管理RBVM,及其优势

文章目录 一、什么是漏洞管理二、什么是基于风险的漏洞管理RBVM三、RBVM的基本流程四、RBVM的特点和优势 一、什么是漏洞管理 安全漏洞是网络或网络资产的结构、功能或实现中的任何缺陷或弱点&#xff0c;黑客可以利用这些缺陷或弱点发起网络攻击&#xff0c;获得对系统或数据…

FFMpeg解复用流程

文章目录 解复用流程图复用器与解复用器小结 解复用流程图 流程图&#xff0c;如上图所示。 复用器与解复用器 复用器&#xff0c;就是视频流&#xff0c;音频流&#xff0c;字幕流&#xff0c;其他成分&#xff0c;按照一定规则组合成视频文件&#xff0c;视频文件可以是mp4…

c语言利用openssl实现简单客户端和服务端(观察记录层最大长度)

文章目录 前言一、客户端实现二、服务端实现总结 前言 本文是使用openssl111w实现的简单客户端和服务端&#xff0c;主要用于观察openssl一个记录层数据包的大小。 一、客户端实现 #include <stdio.h> #include <stdlib.h> #include <string.h> #inc…

搜维尔科技:Movella旗下的Xsens在人形机器人开发中得到广泛应用

人形机器人的发展正在全球范围内受到广泛关注。作为机器人领域的重要分支&#xff0c;人形机器人因其具备高度仿真的外观和动作&#xff0c;以及更贴近人类的行为模式&#xff0c;有望逐渐成为人们日常生活和工业生产中的得力助手。在中国&#xff0c;这一领域的发展尤为引人注…

湘江早报专访惟客数据李柯辰:湖南伢子返湘玩转“AI+金融”

来源 |《湘江早报》 记者 | 黄荣佳 ​ 随着数字化浪潮的到来&#xff0c;AI的风吹遍了各行各业&#xff0c;金融作为对新兴技术最敏感的行业&#xff0c;前沿技术的赋能&#xff0c;让金融科技成为行业发展的“新赛点”。作为一家以大数据和AI人工智能技术驱动的新一代数字化…

MYSQL六、存储引擎的认识

一、存储引擎 1、MySQL体系结构 连接层&#xff1a;最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为…

使用大模型进行时间序列预测

今天想聊聊这周一篇关于使用语言模型进行时间序列预测的工作&#xff0c;这个工作的主要亮点有四个: 首先提出的Chronos框架将时间序列通过缩放和量化转换为token序列&#xff0c;从而可以直接使用语言模型架构(如T5, GPT-2等)来建模时间序列&#xff0c;不需要对模型架构做任…

Word菜谱制作教程

原始文本&#xff1a; 打开标尺 选中文字右键-段落&#xff0c; 制表位&#xff0c;选好字符和引导符 在文字和价格之间按下Tab 效果 参考资料好看视频-轻松有收获 Phrase&#xff1a;我觉等还是有点麻烦&#xff0c;可以插入表格&#xff0c;再把表格调整为无表框即可

60行代码加速20倍: NEON实现深度学习OD任务后处理绘框

【前言】 本文版权属于GiantPandaCV&#xff0c;未经允许&#xff0c;请勿转载&#xff01; 最近在学neon汇编加速&#xff0c;由于此前OD任务发现在检测后处理部分使用OpenCV较为占用资源且耗时&#xff0c;遂尝试使用NEON做后处理绘框&#xff0c;以达到加速并降低CPU资源消耗…

PHP简约轻型聊天室留言源码

无名轻聊是一款phptxt的轻型聊天室。 无名轻聊特点&#xff1a; 自适应电脑/手机 数据使用txt存放&#xff0c;默认显示近50条聊天记录 采用jqueryajax轮询方式&#xff0c;适合小型聊天环境。 访问地址加?zhi进入管理模式&#xff0c;发送 clear 清空聊天记录。 修改在…

品质卓越为你打造App UI 风格

品质卓越为你打造App UI 风格

【ElasticSearch】ElasticSearch基本概念

ES 是一个开源的高扩展的分布式全文检索引擎&#xff0c;它是对开源库 Luence 的封装&#xff0c;提供 REST API 接口 MySQL 更适合数据的存储和关系管理&#xff0c;即 CRUD&#xff1b;而 ES 更适合做海量数据的检索和分析&#xff0c;它可以秒级地从数据库中检索出我们感兴…

【论文复现|智能算法改进】基于改进鲸鱼优化算法的移动机器人多目标点路径规划

目录 1.算法原理2.数学模型3.改进点4.结果展示5.参考文献6.代码获取 1.算法原理 SCI二区|鲸鱼优化算法&#xff08;WOA&#xff09;原理及实现【附完整Matlab代码】 2.数学模型 使用 A* 算法生成所有目标点之间的距离矩阵U: U [ d 1 − 1 d 1 − 2 d 1 − 3 ⋯ d 1 − i d…

关于python下安装selenium以及使用

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 目录 1、win10安装python环境 2、…

深入理解指针(二)

目录 1. 数组名的理解 2. 使用指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. 二级指针 6. 指针数组 7. 指针数组模拟二维数组 1. 数组名的理解 有下面一段代码: #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p &arr[…

本地无法连接linux上的MariaDB数据库

使用mysql -u root -p 输入密码&#xff1a; 进去之后没有user表&#xff0c;无法改user、host等信息。

Blender帧动画

时间线窗口Timeline用于定义帧动画 -视图&#xff1a;方法&#xff0c;平移&#xff0c;框显全部 -帧范围&#xff1a;可以调整动画共多少帧 -当前帧&#xff1a;可以拖动或手工指定 默认每秒24帧 定义一个帧动画类似unity的Timeline&#xff0c;只需定义关键帧&#xff0c…

【太原理工大学】软件安全技术—书本重点梳理、带背

收回我上一篇的话&#xff0c;这科挂人还是挺狠的&#xff0c;去年好像挂了四十号人 ( 老师没有划重点&#xff0c;这篇是我自己根据之前的博主的和课本总结的一些重点&#xff0c;本篇为理解性带背。(&#xff61; _ &#xff61;) ### 第一章&#xff1a;软件安全基础 - **零…

Flask快速入门(路由、CBV、请求和响应、session)

Flask快速入门&#xff08;路由、CBV、请求和响应、session&#xff09; 目录 Flask快速入门&#xff08;路由、CBV、请求和响应、session&#xff09;安装创建页面Debug模式快速使用Werkzeug介绍watchdog介绍快速体验 路由系统源码分析手动配置路由动态路由-转换器 Flask的CBV…

青书学堂 看视频 耍课时

1. 获取课程节点id ( /nynzy/Student/Course/GetStudyRecordAndScore ) 接口地址 2. 把所有的nodeId 保存下来 保存到 old.txt 格式 课程id 与 nodeId 用 | 隔开 3. 然后创建 test.php 注意把 cookie 换成自己的 <?php$oldFilename ./old.txt; $newFilename ./new.…