中南林业科技大学第十一届程序设计大赛校赛题解

本文主要是介绍中南林业科技大学第十一届程序设计大赛校赛题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      • A-译码
      • B-Fence Repair
      • C-有趣的二进制
      • D-有趣的数字
      • E-邝博士的问题
      • F-新田忌赛马
      • G-组合游戏
      • H-渴望力量吗
      • I-背包问题
      • J-are you ok?
      • K-序列求和

原题链接

A-译码

Problem Description:

现在定义一种编码规则:对于长度为3的字符串(均由小写字母组成),首先按照字典序进行排序,即aaa,aab,aac,…,zzz,将这些字符串按照顺序依次从00001至17575编码(前缀0不可省略),即aaa=00000,aab=00001,aac=00002,…,zzz=17575。现在给出一串数字,请你通过计算输出这串数字对应的原字符串。(输入保证该数字长度为5的倍数)
例如输入000021757511222,每五位编号对应于一个字符串
编号00002对应字符串 aac
编号17575对应字符串 zzz
编号11222对应字符串 qpq
故输出为 aaczzzqpq

Input:

输入第一行包含一个整数T,代表测试案例个数。(0 < T <= 10)

Output:

输出数字串对应的原字符串。

Sample Input:
2
10
0000000001
15
000021757511222

Sample Output:

aaaaab
aaczzzqpq

题解:
先初始化一下,把所有的字符串和对应的编码处理出来,然后输入字符串,每五位对应一个数字,每一个数字又对应我们之前处理好的字符串,此时我们之间输出即可。

#include<bits/stdc++.h>
char str[105],a[20000][5];
void init(){int p=0;for(int i='a';i<='z';i++)for(int j='a';j<='z';j++)for(int k='a';k<='z';k++)a[p][0]=i,a[p][1]=j,a[p][2]=k,a[p++][3]='\0';
}
int main()
{init();int n,T;//freopen("in.txt","r",stdin);scanf("%d",&T);while(T--){scanf("%d%s",&n,str),n/=5;for(int i=0,t;t=0,i<n;i++){for(int j=0;j<5;t=t*10+str[i*5+j]-'0',j++){}printf("%s",a[t]);}puts("");}return 0;
}

B-Fence Repair

Description:

Founded in 1958, CSUFT has developed into a multidisciplinary university comprising a wide range of disciplines in science, engineering, agriculture, arts, law, economics, management and education, and has been authorized to offer a comprehensive range of programs including bachelor, master, doctor’s programs and post-doctoral programs. Since its foundation, the university has turned out over 160,000 talents. CSUFT is located in the national historical and cultural city : Changsha.
The above is the history of our school. The next is the description of this problem ^_^.
Giving n numbers,Cyl want to find the answer how many pairs of these numbers meet the condition of Ai *2 = Aj (i < j). Please you tell him.
Please note that there are many groups of samples.

Input:

Line 1: One integer N, the number of numbers. (1 < N <= 100)
Lines 2…..N+1: Each line contains a single integer ai. (0< ai < 100)

Output:

Line 1: One integer.

Sample Input:

3
1
2
2

Sample Output:

2

题意:
就是求有多少对数字可以满足 a [ i ] * 2 == a [ j ] (i < j)这个条件

#include<bits/stdc++.h>
int main()
{int n,a[100];while(scanf("%d",&n)!=EOF){int cnt=0;for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0;i<n;i++)for(int j=i+1;j<n;j++) if(a[i]*2==a[j]) cnt++;printf("%d\n",cnt);}return 0;
}

C-有趣的二进制

Description:

小新在学C语言的时候,邝老师告诉他double类型的数据在表示小数的时候,小数点后的有效位是有限的,但是没有告诉他这是为什么,后来他发现0.1的二进制是一个无限循环小数0.000110011001100110011001100•••,如果只取27位小数,再转换成十进制的话就变成了0.09999999403953552,小新开心的解决了这个问题。与此同时,小新又有了一个新的问题:一个数在64位二进制补码表示下,一共有多少个1。因为小数有无解的情况,所以我们保证输入的都是整数。

Input:

有多组数据,每一行为一个数字n。

Output:

输出这个数字在二进制补码下1的个数。

Sample Input:

15

Sample Output:

4

正数的补码等于其本身,负数的补码等于其取反加一

方法零:字符串模拟求补码过程

方法一:
把数字n每次和1进行与运算,并且在每次运算后,n都右移一位
比如求对于数n,他的二进制为 11101:
11101&1 == 1 cnt+=1 n右移一位
01110&1 == 0 cnt+=0 n右移一位
00111&1 == 1 cnt+=1 n右移一位
……..

需要注意的是:如果负数,我们不断的移位操作,符号位是不会变的,会导致死循环。所以需要将其转化为无符号整数
下面代码是先定义一个无符号数,当做有符号输入
其实我们也可以定义有符号数,输入后再进行类型转换

#include<bits/stdc++.h>

这篇关于中南林业科技大学第十一届程序设计大赛校赛题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706051

相关文章

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>