自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 2.4-8、2的幂次方(Noip1998)

8、2的幂次方(Noip1998)【问题描述】任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab 可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7= 22+2+20 (21用2表示)3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=210 +28 +25 +2+1所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(

2020-07-01 21:58:20 372

原创 2.4-7、背包问题

7、背包问题【问题描述】简单的背包问题。设有一个背包,可以放入的重量为s。现有n件物品,重量分别为w1,w2…,wn,(1≤i≤n)均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s。找到一组解即可。【输入格式】第一行是物品总件数和背包的载重量,第二行为各物品的重量。【输出格式】各所选物品重量。【输入样例】5 101 2 3 4 5【输出样例】number:1 weight:1number:4 weight:4number:5 weight:5#includ

2020-07-01 21:48:47 660

原创 2.4-6、双色Hanoi塔问题

6、双色Hanoi塔问题【问题描述】设A、B、C是3 个塔座。开始时,在塔座A 上有一叠共n 个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着蓝色,偶数号圆盘着红色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:规则(1):每次只能移动1 个圆盘;规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之上;规则(3):任何时刻都不允许将同色圆盘叠在一起;规则(4):在满足移动规则(1)-

2020-07-01 21:42:28 425

原创 2.4-5、求最大公约数

5、求最大公约数【问题描述】用递归方法求两个数m和n的最大公约数。(m>0,n>0)【输入格式】输入二个数,即m和n的值。【输出格式】输出最大公约数。【输入样例】8 6【输出样例】gcd=2#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define N 1000010using namespace std;int ca

2020-07-01 21:31:03 306

原创 2.4-4、求N!的值

4、求N!的值【问题描述】用递归算法,求N!的精确值(N以一般整数输入)。【输入样例】ni.in10【输出样例】ni.out10!=3628800#include <cstdio>#include <iostream>using namespace std;//double Recur(); //定义递归函数double Recur(int i){ double sum; if(i == 1) { sum = 1; } else { su

2020-07-01 21:21:10 1094 1

原创 2.4-3、十进制转换成八进制

3、十进制转换成八进制【问题描述】用递归算法,把任一给定的十进制正整数转换成八进制数输出。【输入格式】输入一个正整数,表示需要转换的十进制数。【输出格式】输出一个正整数,表示转换之后的八进制的数。【输入样例】change.in15【输出样例】change.out17#include <cstdio> int n; void input_data(){ scanf("%d",&n);} void new_way(int x) //用递归的方法输

2020-07-01 18:46:27 585

原创 2.4-2、倒序数

2、倒序数【问题描述】用递归算法写程序,输入一个非负整数,输出这个数的倒序数。【输入格式】输入一个非负整数。【输出格式】输出倒序结果。【输入样例】num.in123【输出样例】num.out321...

2020-07-01 18:41:54 1370

原创 2.4-1、斐波那契数列

1、斐波那切数列【问题描述】斐波那切数列0,1,1,2,3,5,8,13,21,34,55……从第三项起,每一项都是紧挨着的前两项的和。写出计算斐波那切数列的任意一个数据项递归程序。【输入格式】输入所求的项数。【输出格式】输出数据项的值。【输入样例】fbi.in10【输出样例】fbi.out34...

2020-07-01 18:38:55 325

原创 2.4-课堂练习

1、输入一串以‘!’结束的字符,按逆序输出。(用递归做)#include <cstdio>void sort(){ char ch; if((ch=getchar())!='!') { sort() ; putchar(ch); } return;}int main(){ sort();}2、背包问题  问题:假设有n件质量分配为w1,w2,…,wn的物品和一个最多能装载总质量为T的背包,能否从这n件物品中选择若干件物品装入背包,使得被选物品的总

2020-07-01 17:53:06 324

原创 2.3-9、极值问题

9、极值问题【问题描述】已知m、n为整数,且满足下列两个条件:① m、n∈{1,2,…,k},即1≤m,n≤k②(n2-m*n-m2)2=1你的任务是:编程输入正整数k(1≤k≤109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。例如,从键盘输入k=1995,则输出:m=987 n=1597。【输入样例】Acme.in1995【输出样例】Acme.outm=987n=1597# include<stdio.h>long long f[10005];i

2020-06-30 22:43:52 1268

原创 2.3-6、数塔问题

6、数塔问题【问题描述】设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,如图所示:若要求从根结点开始,请找出一条路径,使路径之和最大,只要输出路径的和。【输入格式】第一行为n(n<10),表示数塔的层数从第2行至n+1行,每行有若干个数据,表示数塔中的数值。【输出格式】输出路径和最大的路径值。【输入样例】tower.in51311 812 7 266 14 15 812 7 13 24 11【输出样例】tow

2020-06-30 22:28:02 762

原创 2.3-5、蜜蜂路线

5、蜜蜂路线【问题描述】一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N,M<N,有多少种爬行路线?【输入格式】输入M,N的值。【输出格式】爬行有多少种路线。【输入样例】bee.in1 14【输出样例】bee.out377#include <iostream> #define SIZE 10001using namespace std; int a[SIZE] = {0, 1}; i

2020-06-30 21:38:26 565

原创 2.3-4、骨牌铺法

4、骨牌铺法有1×n的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格。例如当n=3时为1×3的方格。此时用1×1、1×2和1×3的骨牌铺满方格,共有四种铺法。#include<iostream>#include<cstdio>long long b[10001];using namespace std;int main(){ int n; cin>>n; b[1]=1; b[2]=1; b[3]=4;

2020-06-30 17:25:22 1214

原创 2.3-3、平面分割

3、平面分割同一平面内有n(n≤500)条直线,已知其中p(p≥2)条直线相交于同一点,则这n条直线最多能将平面分割成多少个不同的区域?【输入格式】两个整数n(n≤500)和p(2≤p≤n)。【输出格式】一个正整数,代表最多分割成的区域数目。【输入样例】Surface.in12 5【输出样例】Surface.out73#include<cstdio>#include<iostream>using namespace std;int main(){ i

2020-06-30 16:33:21 476

原创 2.3-2、兔子繁殖

2、兔子繁殖有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对。现在,我们有一对刚出生的这种兔子,那么,n个月过后,我们会有多少对兔子呢?假设所有的兔子都不会死亡。【输入格式】输入文件仅一行,包含一个自然数n。【输出格式】输出文件仅一行,包含一个自然数,即n个月后兔子的对数。【输入样例】Rabbit.in5【输出样例】Rabbit.out5#include<iostream>#include <cstdio&g

2020-06-30 16:12:46 298

原创 2.3-1、走楼梯

1、走楼梯楼梯有N级台阶,上楼可以一步上一阶,也可以一步上二阶。编一递归程序,计算共有多少种不同走法?【输入样例】Stairs.in3【输出样例】Stairs.out3#include<cstdio> #include<iostream> using namespace std;long long d[101]= {0}; int main(){ d[1]=1; d[2]=2; int n,a; cin>

2020-06-30 15:57:24 223

原创 2.2-9、士兵站队问题

9、士兵站队问题【问题描述】在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数坐标(x,y)表示。士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x 和y的值才能使士兵们以最少的总移动步数排成一列。【编程任务】计算使所有士兵排成一行需要的最少移动步数。【输入格式】由文件sol.in提供输入数据。文件的第1 行是士兵数n,1≤n≤10

2020-06-28 22:07:40 1035

原创 2.2-8、输油管道问题

8、输油管道问题【问题描述】某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在线性时间内确定主管道的最优位置。【编程任务】给定n 口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和。【输入格式】由文件pipe.in提供输入数据。文件的

2020-06-28 21:45:57 547

原创 2.2-7、统计数字(Noip2007)

7、统计数字(Noip2007)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。【输入格式】输入文件count.in包含n+1行:第1行是整数n,表示自然数的个数。第2~n+1行每行一个自然数。【输出格式】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然

2020-06-28 21:30:55 194

原创 2.2-6、奖学金(Noip2007)

6、奖学金(Noip2007)【问题描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按

2020-06-28 21:12:22 214

原创 高精度算法

1、求N!的值【问题描述】用高精度方法,求N!的精确值(N以一般整数输入)。【输入样例】ni.in10【输出样例】ni.out3628800#include <cstdio>int n,a[100000],l1 =1;void input_data(){ scanf("%d",&n); for (int i = 1; i <= 999;i++) //先初始化存高精度的数组 a[i] = 0; a[1] = 1; //0

2020-06-27 20:09:51 1528

原创 2.2-5、军事机密(Secret.pas)

5、军事机密(Secret.pas)【问题描述】军方截获的信息由n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。最原始的想法就是对这n个数进行小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。【输入格式】第一行n,接着是n个截获的数字,接着一行是数字k,接着是k行要输出数的序号。【输出格式】k行序号对应的数字。【输入样例】Secret.in5121 1 126 123 73243【输出样例】Secret.ou

2020-06-25 22:07:51 795

原创 2.2-3、众数(masses.pas)

3、众数(masses.pas)【问题描述】由文件给出N个1到30000间无序数正整数,其中1≤N≤10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数。求出它的众数及它出现的次数。【输入格式】输入文件第一行是正整数的个数N,第二行开始为N个正整数。【输出格式】输出文件有若干行,每行两个数,第1个是众数,第2个是众数出现的次数。【输入样例】masses.in122 4 2 3 2 5 3 7 2 3 4 3【输出样例】masses.out2 4

2020-06-25 21:25:48 1373

原创 2.2-2、车厢重组(carry.pas)

2、车厢重组(carry.pas)【问题描述】在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。【输入文件】输入文件有两行数据,第一行是车厢总数N(不大于10000),第二行是N

2020-06-25 18:35:57 292

原创 2.1-1、明明的随机数

1、明明的随机数(Noip2006)【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。【输入文件】输入文件random.in 有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机

2020-06-25 12:35:02 561

原创 6.2-上机练习

1.阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m<=3,n<=10),函数值定义为:akm(m,n) = n+1; (m=0时)akm(m,n) = akm(m-1,1); (m>0,n=0时)akm(m,n) = akm(m-1,akm(m, n-1)); (m,n>0时)#include<iostream>using namespace std;int ack(int m

2020-06-18 21:34:50 365

原创 6.2-课堂练习

1、用递归的方法求1+2+3+……+N的值。#include<iostream>using namespace std;int calculate(int n);int main(){ int n; cin>>n;//输入n的值 cout<<calculate(n)<<endl;//调用函数计算从1—n的累加值 return 0;}int calculate(int n){ if(n==0) ret

2020-06-18 21:09:05 208

原创 6.1-17.确定进制【1.13编程基础之综合应用34】

17.确定进制【1.13编程基础之综合应用34】69=42对于十进制来说是错误的,但是对于13进制来说是正确的。即, 6(13) 9(13)= 42(13), 而 42(13)=4131+2130=54(10)。你的任务是写一段程序,读入三个整数p、q和 r,然后确定一个进制 B(2<=B<=16) 使得 p * q = r。 如果 B 有很多选择, 输出最小的一个。例如:p=11, q=11, r=121.则有11(3)* 11(3)= 121(3)因为 11(3)= 1 * 31+ 1

2020-06-18 16:44:26 570

原创 6.1-16. 二进制分类【1.13编程基础之综合应用36】

16 二进制分类【1.13编程基础之综合应用36】若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。例如:(13)10=(1101)2,其中1的个数为3,0的个数为1,则称此数为A类数;(10)10=(1010)2,其中1的个数为2,0的个数也为2,称此数为B类数;(24)10=(11000)2,其中1的个数为2,0的个数为3,则称此数为B类数;程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数

2020-06-18 16:13:26 490

原创 6.1-15.区间内的真素数【1.13编程基础之综合应用23】

15.区间内的真素数【1.13编程基础之综合应用23】找出正整数M和N之间(N不小于M)的所有真素数。真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。输入:输入两个数M和N,空格间隔,1<=M<=N<=100000。输出:按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。样例输入:10 35样例输出:11,13,17,31

2020-06-18 15:57:33 692

原创 6.1-14.最大质因子序列【1.13编程基础之综合应用21】

14.最大质因子序列【1.13编程基础之综合应用21】任意输入两个正整数m,n(1<m<n<=5000),依次输出m到n之间每个数的最大质因子(包括m和n;如果某个数本身是质数,则输出这个数自身)。输入:一行,包含两个正整数m和n,其间以单个空格间隔。输出:一行,每个整数的最大质因子,以逗号间隔。样例输入:5 10样例输出:5,3,7,2,3,5#include<iostream>#include<cmath>using names

2020-06-18 15:48:39 447

原创 6.1-13.判决素数个数【1.13编程基础之综合应用10】

13.判决素数个数【1.13编程基础之综合应用10】输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。输入:两个整数X和Y(1 <= X,Y <= 105)。输出:输出一个整数,表示X,Y之间的素数个数(包括X和Y)。样例输入:1 100样例输出:25#include<iostream>#include<cmath>using namespace std;bool prime(int x);int main(){ i

2020-06-18 15:46:57 453

原创 6.1-12.素数回文数的个数【1.13编程基础之综合应用05】

12.素数回文数的个数【1.13编程基础之综合应用05】求11到n之间(包括n),既是素数又是回文数的整数有多少个。输入:一个大于11小于1000的整数n。输出:11到n之间的素数回文数个数。样例输入:23样例输出:1提示:回文数指左右对称的数,如:292,333。#include<iostream>#include<cmath>using namespace std;bool prime(int x);int palindrome(int n);

2020-06-18 15:40:01 1316

原创 6.1-11.笨小猴【1.9编程基础之顺序查找06】Noip2008提高组第1题

11.笨小猴【1.9编程基础之顺序查找06】Noip2008提高组第1题笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。输入:只有一行,是一个单词,其中只可能出现小写字母,并且长度小于10

2020-06-17 21:48:47 263

原创 6.1-10.单词替换【1.7编程基础之字符串17】

10.单词替换【1.7编程基础之字符串17】输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入:第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100)。s,a,b最前面和最后面都没有空格。输出:输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入:

2020-06-17 18:49:06 824

原创 6.1-9.质数的和与积【小学奥数7827】

9.质数的和与积【小学奥数7827】两个质数的和是S,它们的积最大是多少?输入:一个不大于10000的正整数S,为两个质数的和。输出:一个整数,为两个质数的最大乘积。数据保证有解。样例输入:50样例输出:589#include<iostream>#include<cmath>using namespace std;bool judge(int x);int main(){ int s; int i; cin>>s

2020-06-17 18:26:30 1091 1

原创 6.1-8.我家的门牌号【小学奥数7649】

8.我家的门牌号【小学奥数7649】我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。若其余各家的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。数据保证有唯一解。输入:一个正整数n。n<100000。输出:一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。样例输入:100样例输出:10 15#include<cstdio>long long he = 0;void sum(int x){ he = 0

2020-06-17 18:15:52 1532

原创 6.1-7.素数对【1.12编程基础之函数与过程抽象10】

7.素数对【1.12编程基础之函数与过程抽象10】两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。输入:一个正整数n。1<=n<=10000。输出:所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。样例输入:100样例输出:3 55 711 1317 1929 3141 4359 6171 73#include<iostream>#include&

2020-06-17 17:33:44 476

原创 6.1-6.Vigenère密码【1.12编程基础之函数与过程抽象08】Noip2012提高组第1题

6.Vigenère密码【1.12编程基础之函数与过程抽象08】Noip2012提高组第1题16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。 在Vigenère密码中,密钥k是一个字母串,

2020-06-17 17:26:19 406

原创 6.1-5.机器翻译【1.12编程基础之函数与过程抽象07】Noip2010提高组第1题

5.机器翻译【1.12编程基础之函数与过程抽象07】Noip2010提高组第1题小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。假设内存中有M个单元,每单元能存放一个单词和译义。每当软

2020-06-17 16:56:31 380

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除