信息学奥赛一本通
信息学奥赛一本通
superkcl2022
这个作者很懒,什么都没留下…
展开
-
一本通-递推算法
1312:【例3.4】昆虫繁殖【题目描述】科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过xx个月产yy对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过xx个月产卵),问过zz个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤500≤x≤20,1≤y≤20,X≤z≤50。【输入】x,y,zx,y,z的数值。【输出】过zz个月以后,共有成虫对数。【输入样例】1 2 8原创 2021-03-18 11:05:20 · 86 阅读 · 0 评论 -
一本通-数据排序-例题
1310:【例2.2】车厢重组http://ybt.ssoier.cn:8088/problem_show.php?pid=1310【题目描述】在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多原创 2021-03-17 14:33:50 · 1681 阅读 · 0 评论 -
一本通-数据排序
1310:【例2.2】车厢重组http://ybt.ssoier.cn:8088/problem_show.php?pid=1310【题目描述】在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用原创 2021-03-10 20:34:36 · 310 阅读 · 2 评论 -
一本通-1175:除以13
【题目描述】输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。【输入】一个大于0的大整数,长度不超过100位。【输出】两行,分别为整数除法得到的商和余数。【输入样例】2132104848488485【输出样例】1640080652683450#include <iostream>using namespace std;const int maxn = 100 + 11;char a[maxn];i原创 2021-03-10 20:11:47 · 540 阅读 · 0 评论 -
一本通-1174:大整数乘法
题目描述】求两个不超过200位的非负整数的积。【输入】有两行,每行是一个不超过200位的非负整数,没有多余的前导0。【输出】一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】1234567890098765432100【输出样例】1219326311126352690000看我以前发布的高精度算法集合#include <iostream>using namespace std原创 2021-03-10 19:59:58 · 390 阅读 · 0 评论 -
1173:阶乘和-1173:阶乘和
【题目描述】用高精度计算出S=1!+2!+3!+…+n!(n≤50)S=1!+2!+3!+…+n!(n≤50),其中“!!”表示阶乘,例如:5!=5×4×3×2×15!=5×4×3×2×1。输入正整数nn,输出计算结果SS。【输入】一个正整数nn。【输出】计算结果SS。【输入样例】5【输出样例】153#include <iostream>using namespace std;int n;const int maxn = 1原创 2021-03-09 17:16:02 · 222 阅读 · 0 评论 -
一本通-1172:求10000以内n的阶乘
【题目描述】求10000以内n的阶乘。【输入】只有一行输入,整数n(0<=n<=10000)。【输出】一行,即n!的值。【输入样例】4【输出样例】2410000*10000 用int 可以存储的下,思路和大整数加法类似,边计算边进位,否则最后两个样例会超时http://ybt.ssoier.cn:8088/problem_show.php?pid=1172#include <iostream>using namesp原创 2021-03-09 16:23:51 · 869 阅读 · 1 评论 -
一本通-1171:大整数的因子
【题目描述】已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数<=30。【输出】若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样例】30【输出样例】2 3 5 6#include <iostream>using namespace std;char a[原创 2021-03-08 11:14:06 · 624 阅读 · 0 评论 -
一本通-1170:计算2的N次方
【题目描述】任意给定一个正整数N(N<=100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32#include <iostream>using namespace std;int main(int argc, char const *argv[]){ int n; cin >> n; int arr[1003]; memset(arr,0,siz原创 2021-03-08 10:54:40 · 184 阅读 · 0 评论 -
一本通-1309-回文数
【题目描述】若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如,对于10进制数87,STEP1: 87+78= 165 STEP2: 165+561= 726STEP3: 726+627=1353 STEP4:1353+3531=4884在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。写一个程序,给定一个N(2<N<=10或N=原创 2021-03-07 15:20:23 · 1348 阅读 · 0 评论 -
一本通-高精度计算
1. 进位、借位处理加法进位: 下标地位是个位,高位是十位、百位。输出的时候倒着输出。计算着时候必须先存储个位c[i] = a[i] + b[i];if(c[i] >= 10){ //高位进位 c[i] %= 10; c[i+1]++; }减法进位: a[i]-b[i]if(a[i] < b[i]){ a[i+1]--; //高位借位 a[i] += 10;}c[i] = a[i] - b[i];乘法进位: 看不懂,下面会解释.原创 2021-03-06 12:03:16 · 236 阅读 · 0 评论