【2021暑期训练-1】7-1 拆数
从键盘输入一个三位的正整数,输出它的各位之和与积。
输入样例:例如:
1358
输出样例:例如:
116 120
思路很简单,不过可以巧妙的输入
代码1234567891011#include<iostream>using namespace std;int main(){ int n; cin>>n; int a=n/100; int b=n%100/10; int c=n%10; cout<<a+b+c<<" "<<a*b*c; return 0; }
巧妙的输入如下:
12345678910#include <iostream>using namespace std;int main() { int a,b,c; scanf("%1d%1d%1d",&a,&b,&c); cout << a+b+c << " " << a*b*c << endl; return 0;}
...
【2021暑期训练-1】7-8 PAT排名汇总
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。
每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。
现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。
输入格式:输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。
输出格式:首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增 ...
【2021暑期训练-1】7-7 模拟EXCEL排序
Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。
输入格式:输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。
输出格式:在N行中输出按要求排序后的结果,即:当C=1时,按学号递增排序;当C=2时,按姓名的非递减字典序排序;当C=3时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
输入样例:12343 1000007 James 85000010 Amy 90000001 Zoe 60
输出样例:123000001 Zoe 60000007 James 85000010 Amy 90
思路定义sort的排序函数,对结构体排序
代码1234567891011121314151617181920212223242526272829303132333435363738394041#include<io ...
每日分享day05-Markdown与Typora
河北大学暑期程序设计训练每日知识分享-day05
每日分享——Markdown与TyporaTypora文件可在群文件进行下载~~程序员专用笔记神器:markdown以及Typora
markdown语法简易,用于编辑文本文档,可快速的定义目录、写入数学公式、表格、代码块等,语法非常简单。文件后缀为.md目前许多网站使用markdown来撰写帮助文档或是用于论坛发表文章(csdn、博客园、github等)程序员必定接触github,接触github就必定要使用markdown
Typora是一款非常nice的markdown编辑器,像使用word一样编辑markdown代码(其实不用写代码),而且软件是完全免费的这里是用Typora写的笔记:
每日分享day04-真正的服务器主机和虚拟主机
河北大学暑期程序设计训练每日知识分享-day04
每日分享—— 真正的服务器主机和虚拟主机
独立服务器:独立服务器,顾名思义,就是一个躺在机房的实实在在的物理服务器。
虚拟主机:计导实验第一个虚拟主机(Virtual Host Virtual Server)是使用特殊的软硬件技术,把一台计算机主机分成一台台‘虚拟’的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能。在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程序,互不干扰;而各个用户拥有自己的一部分系统资源(IP地址、文件存储空间、内存、CPU时间等)。但虚机主机没有独立的操作系统,只能通过提供的控制面板操作,而且是共享服务器资源,在稳定性和访问速度方面是受限的。
每日分享day03-C++常用位运算知识
河北大学暑期程序设计训练每日知识分享-day03
每日分享——C++常用位运算知识任何信息在计算机中都是采用二进制表示的,数据在计算机中是以补码形式存储的,位运算就是直接对整数在内存中的二进制位进行运算。由于位运算直接对内存数据进行操作,不需要转换成十进制,因此处理速度非常快,在信息学竞赛中往往可以优化理论时间复杂度的系数。同时,一个整数的各个二进制位互不影响,利用位运算的一些技巧可以帮助我们简化程序代码。
每日分享day02-疯狂的程序员
河北大学暑期程序设计训练每日知识分享-day02
每日分享——《疯狂的程序员》本书PDF版可在群文件进行下载这是一本关于程序员成长历程的小说,小说针对的最主要的群体是刚学习写程序或者刚加入程序员不久的年轻人。该书以作者的学习、工作、生活为原型,讲述了主角绝影大学、工作、创业三部分的经历,其中作为主线的实际项目案例都基于作者深厚的技术沉淀。小说描述了一名普通程序员的生活经历,我们从中可以感受到每个程序员都有自己的理想追求,但程序员和普通人一样,也会遇到生活中的各种琐事,也会为了职场上复杂的人际关系而苦恼。
【2021暑期训练开营测试】8-2 化合物
小A想要合成一个化合物。初始时,容器里有 a 克的物质A。小A每次操作都会向容器中加入 b 克物质A与 c 克物质B,当容器中物质A与物质B的比值不大于 d 时,说明小A合成成功了.
前 3 个测试点满足
1≤a,b,c,d≤105
后 2 个测试点满足
1≤a,b,c,d≤109
输入格式:输入 4 个整数a, b, c, d.
输出格式:若可以合成化合物,那么输出小A的最小操作次数,否则输出−1
输入样例1:15 2 3 2
输出样例1:进行 1 次操作后,容器里有 7 克物质A与3 克物质B, 此时 7/3>2, 不满足条件,2次操作后,容器里有 9 克物质A与6 克物质B, 此时 9/6<=2 满足条件,因此答案为 2.
12
输入样例2:16 9 2 3
输出样例2:1-1
输入样例3:1100000 99999 100000 1
输出样例3:1100000
思路直接暴力循环求解会超时,得不到满分
设x为某时物质A的质量,y为某时物质B的质量,操作n次后满足条件,即满足(a+b*n)/c*n <= d,根据该公式推导出n的解公式即可
代码1234 ...
【2021暑期训练开营测试】8-1 存钱罐
小A买了一个新的存钱罐,他很开心。从他买存钱罐的第 1 天起, 他每天都会往存钱罐里存钱, 第 1 天存 1 元, 第 2 天存 2 元…以此类推, 第 i 天存 i 元, 小A想要知道他最早哪一天能存到 N 元以上, 你能帮他算一算吗。
前3个测试点满足
1≤N≤105
后2个测试点满足
1≤N≤109
所有测试点中 T 满足 1≤T≤105
输入格式:总共有 T 次询问, Ni表示存钱罐中存到Ni元需要多少天
12345678TN1N2N3...Ni...NT
输出格式:输出T个数, 表示最早存到 Ni元以上的天数
输入样例:123212100128
输出样例:125447
对于第一个询问的解释 :
第 1 天存钱罐有 1 元
第 2 天存钱罐有 3 元
第 3 天存钱罐有 6 元
第 4 天存钱罐有 10 元
第 5 天存钱罐有 15 元, 大于 12 元, 因此答案是第 5 天
思路等差数列an=n,询问该等差数列前n项和,n为几时大于给定的Ni
可直接暴力循环计算,会超时
利用等差数列求和公式,Sn=(n*(a1+an))/2
代码12345678910111213 ...
【2021暑期训练开营测试】8-8 完美配对2
给定一个长度为 n 的整数序列 a1 , a2 , … , an。我们称一个二元组(i,j)是完美配对的,当且仅当 i<j 并且 ai−aj<j−i.求完美配对的二元组数目.
对于前 3 个测试点
1≤n≤103
对于后两个测试点
1≤n≤105
所有的测试点都满足
1≤ai≤105
输入格式:12na1 a2 ... an
输出格式:输出完美配对的二元组数目
输入样例:1253 2 5 2 6
输出样例:仅有一对二元组(1, 2)满足条件, 因为 3 - 2 = 2 - 1.
11
思路暴力循环会超时,弄懂完美配对1再看本题
需要树状数组,没有学习过数据结构的话,本题可不了解,等知识积累到一定程度后,再学习树状数组是什么
只要两个元素满足ai−aj<j−i,即ai+i<aj+j
扫描给定数组,每扫描一个数ai,寻找前面已扫描过的满足ai+i<aj+j的数的数量,相当于寻找标记的aj+j为0到aj+j为(ai+i-1)的所有元素数
不再和完美配对1那样取num[arr[i] + i-1]值,而是取num[0]~num[arr[i] + i-1]的所有 ...