![](https://img-blog.csdnimg.cn/20201215163203240.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《信息学奥赛一本通》
文章平均质量分 58
《信息学奥赛一本通》第一部分C++语言部分 题解
咸鱼爱学习
普通的IT爱好者。微信公众号:咸鱼爱学习
展开
-
【高精度】1172_求10000以内的阶乘
题目相关【题目描述】求10000以内n的阶乘。【输入】只有一行输入,整数n(0≤n≤10000)。【输出】一行,即n!的值。【输入样例】4【输出样例】24分析首先n的阶乘是从1开始相乘,乘到n为止的总乘积。定义很简单,但是要注意下数据范围,本题的n最大到达了10000。而13的阶乘就已经解决int范围的极限了,更别提10000了。这道题的答案很大,所以要用大数的方式来进行处理。另外,$n!=(n-1)!\times n $而n的范围又在10000以内,所以可以看作是一个大数乘一个i原创 2021-01-11 23:50:55 · 578 阅读 · 0 评论 -
【高精度】1170_计算2的N次方
题目相关【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32分析本题考察的是大数乘法。需要注意观察数据范围,int的范围极限接近2312^{31}231 ,本题中N的范围使得最后的数值会超过int范围极限,甚至是long long范围极限。那么此时可以采用高精度乘法的思想来进行处理。并且,这一题是求2的次方值,只需将值与2相乘即可。实际上是一个高精数字与整数数字相乘。模拟竖式原创 2020-12-21 01:35:53 · 450 阅读 · 0 评论 -
【高精度】1169_大整数减法
题目相关【题目描述】求两个大的正整数相减的差。【输入】共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。【输出】一行,即所求的差。【输入样例】99999999999999999999999999999999999999999999999999【输出样例】9999999999999999999999990000000000000分析本题考察的是高精度减法。我们可以模拟减法的竖式计算过程从而实现高精度的计算。和高精度加原创 2020-12-21 01:27:21 · 1167 阅读 · 1 评论 -
【高精度】1168大整数加法
题目相关【题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】2222222222222222222233333333333333333333【输出样例】55555555555555555555分析本题考察的是高精度计算中的加法计算。对于超出数据类型范围的数据,我们首先需要解决的就是输入、存储的原创 2020-12-16 22:13:39 · 483 阅读 · 0 评论 -
【高精度】1170_2的N次方
题目相关【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32分析本题考察的是大数乘法。需要注意观察数据范围,int的范围极限接近2312^{31}231 ,本题中N的范围使得最后的数值会超过int范围极限,甚至是long long范围极限。那么此时可以采用高精度乘法的思想来进行处理。并且,这一题是求2的次方值,只需将值与2相乘即可。实际上是一个高精数字与整数数字相乘。模拟竖式原创 2020-12-16 19:56:53 · 260 阅读 · 0 评论 -
《信息学奥赛一本通 C++版》1007_(a+b)x C的值
题目相关【题目描述】给定3个整数a、b、c,计算表达式(a+b)×c的值。【输入】输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。(-10,000<a,b,c<10,000)【输出】输出一行,即表达式的值。【输入样例】2 3 5【输出样例】25分析本题考察的是整数的计算。数学符号程序中的符号++−-−-×\times×*÷\div÷/代码实现#include <iostream>原创 2020-12-16 14:44:26 · 280 阅读 · 0 评论 -
《信息学奥赛一本通 C++版》1005_地球人口承载力估计
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?原创 2020-12-15 15:21:43 · 3007 阅读 · 1 评论 -
《信息学奥赛一本通 C++版》1004_字符三角形
题目相关【题目描述】给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。【输入】输入只有一行,包含一个字符。【输出】该字符构成的等腰三角形,底边长5个字符,高3个字符。【输入样例】*【输出样例】 * ********分析本题考察的是图形的输出。观察题目要求输出的图形,发现这个三角形由三行内容组成。第行行是两个空格加一个星号,第二行是一个空格加三个星号,第三行是5个星号。星号可以替换成输入的任意字符。接下来就是按找到的规律进行输出。使用printf输出字原创 2020-12-15 15:18:27 · 1357 阅读 · 0 评论 -
《信息学奥赛一本通 C++版》1003_对齐输出
题目相关【题目描述】读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。【输入】只有一行,包含三个整数,整数之间以一个空格分开。【输出】只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。【输入样例】123456789 0 -1【输出样例】123456789 0 -1分析本题主要考察了带格式要求的输出。此时可以采用printf的形式来进行输出。注意,需要添加头文件"cstdio"。若想使得整数占据若干个字符可以使原创 2020-12-15 15:16:30 · 927 阅读 · 0 评论 -
《信息学奥赛一本通 C++版》1002输出第二个整数
题目相关【题目描述】输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。【输入】只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。【输出】只有一行,一个整数,即输入的第二个整数。【输入样例】123 456 789【输出样例】456分析本题考察了变量基础以及基础的输入输出语句。声明变量格式: 变量类型 变量名;//声明一个变量 变量类型 变量名1,变量名2,变量名3;//声明多个同类型变量变量的输入cin>原创 2020-12-15 14:55:25 · 626 阅读 · 0 评论 -
《信息学奥赛一本通 C++版》1006_A+B问题!
题目相关【题目描述】大部分的在线题库,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法。A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。【输入】一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。【输出】一个整数,即A+B的值。保证结果在整型范围内。【输入样例】1 2【输出样例】3分析本题考察整数型变量的简单计算。数学符号程序中的符号++++−-−-原创 2020-12-15 14:42:37 · 441 阅读 · 1 评论 -
《信息学奥赛一本通 C++版》1001_Hello,World!
题目相关【题目描述】编写一个能够输出“Hello,World!”的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。提示:“Hello,World!”中间没空格。【输入】无【输出】Hello,World!【输入样例】(无)【输出样例】Hello,World!分析主要考察输出语句的使用。使用cout来进行输出。注意进行命名空间的引用。或者在cout前指明对应的空间。代码实现#include<iostre原创 2020-12-15 14:01:23 · 293 阅读 · 0 评论 -
信息学奥赛一本通_1144_单词翻转
题目相关【题目描述】输入一个句子(一行),将句子中的每一个单词翻转后输出。【输入】只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。【输出】翻转每一个单词后的字符串,单词之间的空格需与原文一致。【输入样例】hello world【输出样例】olleh dlrow【来源】1144_单词翻转分析 注意题目要求的是将单词进行翻转而不是仅仅是将整句话进行翻转。语句中包含空格,我们可以使用gets()来进行输入。单词间的空格需与原文一致,我们可以在遇见空格时原样进行输出。原创 2020-05-27 14:49:11 · 2504 阅读 · 0 评论 -
信息学奥赛一本通_1143_最长最短单词
题目相关【题目描述】输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。【输入】一行句子。【输出】第1行,第一个最长的单词。第2行,第一个最短的单词。【输入样例】I am studying Programming language C in Peking University【输出样例】Programming I【提示】提示:如果所有单词长度相同,那么原创 2020-05-27 00:05:17 · 2835 阅读 · 3 评论 -
信息学奥赛一本通_1137_加密的病历单
题目相关【题目描述】小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz)2.逆序存储(abcd -> dcba )3.大小写反转(abXY -> ABxy)原创 2020-05-25 21:30:43 · 1797 阅读 · 1 评论 -
信息学奥赛一本通_1136_密码翻译
题目相关【题目描述】在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。【输入】输入一行,包含一个字符串,长度小于80个字符。【输...原创 2020-05-02 18:17:59 · 2810 阅读 · 1 评论 -
信息学奥赛一本通_1135_配对碱基链
题目相关【题目描述】脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶( C)。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。【输入】一个字符串,表示一条碱基链。这个字符串只含有大写...原创 2020-05-02 16:54:49 · 1173 阅读 · 1 评论 -
信息学奥赛一本通_1134_合法C标识符
题目相关【题目描述】给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。C语言标识符要求:非保留字;只包含字母、数字及下划线(“_”)。不以数字开头。【输入】一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。【输出】一行,如果它是C语言的合法标识符,则输出yes,否则输出no。【输入样例】RK...原创 2020-05-02 16:23:14 · 1526 阅读 · 1 评论 -
信息学奥赛一本通_1133_输出亲朋字符串
题目相关##【题目描述】编写程序,求给定字符串s的亲朋字符串s1。亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的AS...原创 2020-04-30 14:52:12 · 1251 阅读 · 1 评论