c/c++入门
适用于c/c++初学者,acm入门者。
焚冉
人生有味是清欢
焚膏继晷
时光荏苒
展开
-
字符串编辑
从键盘输入一个字符串(长度<=40个字符),并以字符’.‘结束。例如:‘This is a book.’ 现对该字符串进行编辑,编辑功能有:D:删除一个字符,命令的方式为:D a 其中a为被删除的字符例如:D s 表示删除字符’s’,若字符串中有多个 ‘s’,则删除第一次出现的。如上例中删除的结果为: ‘Thi is a book.’I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符’s’的前面插入字原创 2022-02-10 11:40:43 · 566 阅读 · 0 评论 -
1214:约瑟夫问题
题目描述约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。输入格式每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:0 0输出格式对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号输入样例6 212 4原创 2021-10-01 16:18:38 · 67 阅读 · 0 评论 -
1155:C语言-报数
题目描述有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。输入格式初始人数n输出格式最后一人的初始编号输入样例3输出样例2ps约瑟夫问题的超简单版#include<stdio.h>int main(){ int n; scanf("%d",&n); int ans=0; for(int i=1;i<=n;i++) {原创 2021-10-01 16:18:20 · 99 阅读 · 0 评论 -
题库 1171:奇校验矩阵
题目描述对于一个给定的布尔矩阵,它的每一行每一列各个数的和必然是确定的。下面给出一个4 x 4的布尔矩阵。1 1 1 00 1 0 00 1 0 00 0 0 1很明显,这个布尔矩阵每行各数的和依次位3,1,1和1,每列各数字的和依次为1,3,1和1,每行每列之和都是奇数。我们称所有行和列和都是奇数的矩阵满足奇校验.你的任务是写一个程序来判断一个矩阵是否满足奇校验。如果不是的话,请检查如果更改矩阵中某一个布尔数的值,使其满足奇校验。如果依旧不可达成,则停止工作。输入格式输入会原创 2021-05-17 18:11:38 · 132 阅读 · 0 评论 -
题库 1178:CapsLock
题目描述GuoZQ正在打字,需要打的字只有大写和小写字母。他发现他在打字的时候,如果遇见大写字母,他可以先打开CapsLock键,使得CapsLock指示灯亮起来,即默认输入大写,这样他直接打上去的字母就是大写字母;他还可以用另一种办法,那就是在保证CapsLock灯关闭的状态下,即默认输入小写,使用Shift键+字母键的组合形式来输入大写字母。如果GuoZQ遇到的了一连串的大写字母,聪明的他可能先将CapsLock打开,然后连续输入这些大写字母,然后再关掉CapsLock。现在他发现,这两种写法都很好原创 2021-05-17 17:50:40 · 293 阅读 · 0 评论 -
题库1252(深搜) 水滴
题目描述在一个正方形的水平桌面上,可以将其划分为n*n的矩阵,1<=n<=100。如果矩阵的某一位置有一滴水则该位置对应的矩阵元素用W表示,否则用O表示。当一滴水的直接相邻的8个方向上的任一位置也有水滴时,他们会连接在一起而汇聚成一大滴水。不直接相邻的8个方向的水滴则不能汇聚。给出桌面上的水滴信息,求最后又几滴水?无论水滴多大都算一滴。输入格式多组输入,第一行一个正整数n,接下来输入n*n的矩阵,输入以文件未结束。输出格式每组输出最终有几滴水,每组输出独占一行。输入样例原创 2021-05-16 22:43:42 · 130 阅读 · 0 评论 -
题库1253(广搜)病毒扩散
题目描述在一个 N * M 的方格中,有一些位置是病毒所在位置,每一秒钟,每一个病毒都会向四个方向同时扩散,扩散出去的病毒还会以相同的方式继续扩散….好可怕啊,那么最少几秒钟病毒源就可以将整个方格都扩散?输入格式题目数据有多组,请读入至文件结束。每组有两个正整数N,M(1<=N,M<=100)。代表该区域格阵的行、列数。之后有N行,每行M个字符,作为区域的描述。其中’.’代表该点为空,’x’代表该点有病毒存在。输出格式输出一个整数,即病毒占满整个区域时所需要的时间。若一直无法原创 2021-05-16 22:40:56 · 117 阅读 · 0 评论 -
题库1056:共同的前缀
#include<string.h>#include<iostream>using namespace std;struct sj{ char zf[201]; //结构体记录数据}s[21];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { int k; int flag=0; cin>>k;原创 2021-04-20 21:05:25 · 132 阅读 · 0 评论 -
海底地铁
记录每段铁路的通过次数,计算每段铁路的俩种票价,用min函数取最小值累加得结果原创 2021-04-14 22:40:53 · 87 阅读 · 0 评论 -
2057 A + B Again
//了解 __int64 的输入和输出方式即可#includeusing namespace std;void main(){__int64 a,b,c;while(scanf("%I64X %I64X",&a,&b)!=EOF){c=a+b;if(c<0)printf("-%I64X\n",-c);elseprintf("%I64X\n",c);}}原创 2021-04-10 22:35:47 · 78 阅读 · 0 评论 -
2037
#include<iostream>#include<algorithm>using namespace std;struct sj{ int kssj; int jssj;}ss[101];bool cmp(sj a,sj b){ return a.jssj<b.jssj;}int main(){ int n; while(cin>>n) { if(n==0) {原创 2021-04-10 22:28:50 · 50 阅读 · 0 评论 -
1004
#include<iostream>#include<string.h>#include<algorithm>using namespace std;struct sj //结构体方便统计颜色数据{ char name[16]; int gs=0;}s[1005];bool cmp(sj a,sj b) //结构体排序,将个数最多的颜色排序到最前面{ return a.gs>b.gs;}int原创 2021-04-10 22:27:04 · 65 阅读 · 0 评论 -
题目 1063:有多少个1?
题目描述计算机中存储的整数都是按补码的型式,一个32位有符号整数的补码的定义为:如果x>=0,则x的补码等于x的二进制表示;如果x<0那么x的补码为2^32+x的二进制表示。请根据给定的整数,求出它的补码包含有多少位为1。输入格式每行一个样例,为一个整数(这个整数不会超出int范围)。输出格式每行输出一个对应样例的结果。输入样例10-1输出样例1032#include <stdio.h>int main(){ unsigne原创 2021-03-07 21:09:50 · 121 阅读 · 0 评论 -
题目 1216:Bugs
题目描述有两只Bugs在坐标轴上,他们每个单位时间只能爬行一个单位长度,他们的爬行均为匀速运动。当两只Bugs相向爬行碰撞时,他们会各自掉头继续爬行,可以认为碰撞是瞬间发生。现在告诉你N只Bugs的爬行起点和方向,请问T时间后,向左和向右爬行的Bugs各有多少只?输入格式多组测试数据,每组数据先输入两个正整数 N (1<=N<=100) 和 T (1<=T<=1018),分别为代表Bugs数量以及爬行时间,接下来输入N行,每行一个整数和一个字母。其中整数代表某只Bug的开原创 2021-03-06 19:32:36 · 138 阅读 · 0 评论 -
1249:数字塔
题目描述在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?输入格式输入数据首先包括一个整数C表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[099]内。输出格式对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。输入样例原创 2021-02-15 19:39:45 · 498 阅读 · 0 评论 -
1215:页码统计
题目描述最近,关老师买了一本书,他经常抽着小烟儿悠闲地看书玩~。一天他2岁的小儿子也过来凑热闹,不过这个小家伙儿还看不明白书里面的故事,但是他已经认得数字并且会计数了。他的小儿子想知道,对于这本书而言,从第1页到第N页,里面包含的数字分别有多少个呢?ps:书的页码从1开始正常编页。输入格式多组输入数据,每组数据输入一个正整数N ( 1<= N <= 1000 )。输入以文件尾(EOF)结束。详见样例。输出格式对于每组数据,输出9个统计数字,分别代表1到9这九个数字在第1原创 2021-02-15 19:37:52 · 296 阅读 · 1 评论 -
1200:派克大招
题目描述派克大招可真是太帅气了,但是有个问题他是个“X”形状的所以我们只要走位好一点就可以躲掉大招,hpf学长玩这个英雄就经常被人躲掉大招,于是hpf学长想到如果可以开多个大招就好了这样别人就躲不掉了,但是好像也不对,如果是一个“X”那么就有4个点可以躲掉我的大招如果是 两个大招最多有多少个点呢?hpf学长把问题抽象成“假设X很长”然后在平面上画N个X最多可以形成多少个平面呢?hpf学长画了 两个X的图像发现有 11个平面那么N个X最多有多少个平面呢?输入格式输入的是一个正整数N (N&原创 2021-02-15 19:35:44 · 313 阅读 · 0 评论 -
HD 1237简单计算器
Problem Description读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。Sample Input1 + 24 + 2 * 5 - 7 / 110Sample Output3.001原创 2021-01-25 10:37:18 · 118 阅读 · 0 评论 -
2012 素数判定
Problem Description对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。Input输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。Output对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。Sample Input0 10 0Sample Outpu原创 2021-01-19 22:42:24 · 67 阅读 · 0 评论 -
1232:越狱
#include<iostream>using namespace std;long long n,m;long long pow(long long a,long long b){ long long ans=1,base=a%100003; while(b!=0) { if(b&1!=0) ans=(ans*base)%100003; base=(base*base)%100003; b>>=1; } return ans;}int ma原创 2021-01-19 22:09:07 · 97 阅读 · 0 评论 -
2098 分拆素数和
Problem Description把一个偶数拆成两个不同素数的和,有几种拆法呢?Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。Sample Input30260Sample Output32#include<iostream>#include<math.h>using namespace std;int ss(int原创 2021-01-19 22:08:15 · 78 阅读 · 0 评论 -
2097 Sky数
Problem DescriptionSky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Sky非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。Input输原创 2021-01-19 20:42:30 · 134 阅读 · 0 评论 -
2055 An easy problem
Problem Descriptionwe define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, … f(Z) = 26, f(z) = -26;Give you a letter x and a number y , you should output the result of y+f(x).InputOn the first line, contains a number T.then T lines follow, each line is原创 2021-01-19 20:41:05 · 75 阅读 · 0 评论 -
最小公倍数
题目描述给定两个正整数,求它们的最小公倍数。输入格式多组输入数据,每组输入两个正整数,且不超过int可以表示的范围。输出格式每行对应输出最小公倍数。输入样例11 2125 3544 54输出样例2311751188#include<stdio.h>int gcd(int a,int b)//求最大公约数的函数{ int c; while(b!=0) //辗转相除法 { c=a%b; a原创 2021-01-11 13:42:33 · 145 阅读 · 0 评论 -
2093 考试排名
Problem DescriptionC++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢?我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,总共该题错误提交了几回。虽然你在题数上,大步地跃上了一个台阶,但是在耗时上要摊上你共花去的时间。特别是,曾经有过的错误提交,每次都要摊上一定的单位时间分。这样一来,你在做出的题数上,可能领先别人很多,但是,在做出同原创 2021-01-07 10:44:04 · 448 阅读 · 0 评论 -
1220:N钱买N鸡
题目描述今有钱N元,要买鸡N只,公鸡3元一只,母鸡1元一只,小鸡1元3只,若公鸡、母鸡和小鸡至少要买一只请编程求出恰好用完N元钱买N只鸡的所有的方案。输入格式多组测试数据输入。输入一整数N,表示现在有N元(0<=N<=500)。输入样例100200输出样例2449注意:题目的至少!以小鸡进行枚举。#include<iostream>using namespace std;int main(){ int n; while(原创 2021-01-11 13:16:43 · 945 阅读 · 0 评论 -
亲和数
Problem Description古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。你的任务就编写一个程序,判断给定的两个数是否是亲和数Input输入数据第一行包含一个数M,接下有M行,每行一原创 2021-01-05 10:49:41 · 600 阅读 · 1 评论 -
汉字统计
Problem Description统计给定文本文件中汉字的个数。Input输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。Output对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。[Hint:]从汉字机内码的特点考虑~Sample Input2WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa!马上就要期末考试了Are you ready?Sample Output149#incl原创 2021-01-05 10:49:22 · 120 阅读 · 0 评论 -
杨辉三角
Problem Description还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1Input输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。Output对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。Sample Input2原创 2021-01-05 10:49:00 · 222 阅读 · 0 评论 -
1141:C语言-转置矩阵
题目描述写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。输入格式一个3x3的矩阵输出格式转置后的矩阵输入样例1 2 34 5 67 8 9输出样例1 4 72 5 83 6 9多观察找找规律,考察对下标的掌握。#include<iostream>using namespace std;int main(){ int arr[3][3]; for(int i=0;i<3;i++) {原创 2021-01-05 10:48:31 · 343 阅读 · 0 评论 -
1177:矩阵加法
题目描述给定两个N×M的矩阵,计算其和。其中:N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000。输入格式输入数据的第一行包含两个整数N、M,表示需要相加的两个矩阵的行数和列数。接下来2*N行每行包含M个数,其中前N行表示第一个矩阵,后N行表示第二个矩阵。输出格式你的程序需要输出一个N*M的矩阵,表示两个矩阵相加的结果。注意,输出中每行的最后不应有多余的空格,否则你的程序有可能被系统认为是Presentation Error输入样例2 21 23 45 6原创 2021-01-05 10:48:11 · 360 阅读 · 0 评论 -
1137:C语言-插入队列
题目描述已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。输入格式第一行,原始数列。 第二行,需要插入的数字。输出格式排序后的数列输入样例1 7 8 17 23 24 59 62 10150输出样例178172324505962101用c++写的代码,原理都一样。#include<iostream>#include<algorithm>using namespace std;int ma原创 2021-01-05 10:47:43 · 462 阅读 · 0 评论 -
1087:数组中第k小的元素
题目描述求数组中第k小的元素输入格式输入一共3行:第一行:一个整数n表示数组中元素的数量。第二行:一共n个整数,表示数组中的元素第三行:一个整数k输出格式输出一个整数,表示数组中第k小的元素输入样例101 2 3 4 5 6 7 8 9 105输出样例5#include<stdio.h>int main(){ int n,x; scanf("%d",&n); int arr[n]; for(int i=原创 2021-01-05 10:47:25 · 183 阅读 · 0 评论 -
1054:分数加减法
题目描述给你两个分数,请计算两者和及差。输入格式第一行是一个整数K,表示样例的个数。以后每行一个样例,每行4个正整数,a、b、c、d,即计算分数a/b与c/d的和、差。4个整数都不超过10,000。输出格式每行输出一个样例的结果,先输出和,后输出差。如果结果的值为整数,那么只需要输出整数,如果结果的值为分数,需要输出x/y的形式,并保证x,y互质。输入样例31 2 1 22 3 1 31 8 5 8输出样例1 01 1/33/4 -1/2#include&l原创 2021-01-05 10:47:05 · 506 阅读 · 0 评论 -
1035:打印整数和字符串
题目描述输入一个整数和一个字符并输出它们。输入格式输入这个整数n和一个字符串str输出格式输出这个整数和这个字符串且中间用空格隔开。输入样例234 H输出样例234 H#include<iostream>using namespace std;int main(){ int n; char str[10]; cin>>n>>str; cout<<n<<" "<<原创 2021-01-05 10:17:23 · 447 阅读 · 0 评论 -
输入输出练习Ⅷ
问题描述您的任务是计算某些整数的总和。输入格式输入在第一行中包含整数 N,然后 N 行跟随。每行以整数 M 开头,然后 M 整数在同一行中跟随。输出格式对于每组输入整数,应在一行中输出它们的总和,并且必须注意输出之间有一条空白行。输入样例34 1 2 3 45 1 2 3 4 53 1 2 3输出样例10156#include<stdio.h>int main(){ int n,a,t; scanf("%d",&n);原创 2021-01-04 13:12:58 · 408 阅读 · 0 评论 -
1203:序列的逆序数统计
题目描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2 4 3 1 中,2 1,4 3,4 1,3 1是逆序,逆序数是4,为偶排列。现在给定N个互不相同的正整数构成的序列,统计该序列的逆序数。输入格式多组输入数据,每组第一行一个正整数N(1<=N<=1000),接下来N行每行输入一个正整数,范围在1~105。输入以文件尾结束。原创 2021-01-02 17:53:28 · 277 阅读 · 0 评论 -
1190:互换贺卡
题目描述在ACM班里有N名同学,每个同学各写了一张卡片,先收集在一起,然后从中每人拿一张别人写的卡片,则卡片的不同分发方式共有多少种?输入格式一个整数N,表示有N名同学。输出格式一个整数,表示卡片不同分发方式的数量。输入样例4输出样例9思路找规律,题目要求不拿自己的卡,所以4个人从的一个人开始就是3种方法,第二个人2种方法,第三个人1种方法,这时前三个人卡都空出来,所以第四个人有3种方法。公式为f(x)=x-1+x-2+x-3+x-1。即4*x-7。#includ原创 2021-01-02 17:52:39 · 388 阅读 · 0 评论 -
题库1251:读书
题目描述Carol是一个爱学习的小朋友,他最近在读一本书,这本书的某些页十分晦涩难懂,需要阅读完另一页的内容才能完全理解。 而有些页则比较通俗易懂,阅读完当前页即可理解。 Carol是一个喜欢钻研的小朋友,他每天都会从这本书中页数最小的从未读过的一页开始读,读到完全理解这一页的内容为 止。例如对于当Carol某一天要读这本书的第a页时,这一页要求读完第b页才能理解,于是Carol又要去读第b页,而第b页要求读完 第c页才能理解,于是Carol又要去读第c页,而第c页不需要读别的页就可以理解,或是需要读的原创 2021-01-02 17:51:29 · 136 阅读 · 0 评论 -
输入输出练习 Ⅵ
题目描述你的任务又是计算a + b。输入格式多组数据输入。每组数据输入两个数a,b。输出格式每组数据首先输出和,然后在输出一个空白行。输入样例1 510 20输出样例630#include<stdio.h>int main(){ int a; int b; while(scanf("%d %d",&a,&b)!=EOF) { printf("%d\n\n",a+b); }}原创 2020-12-30 14:44:17 · 116 阅读 · 0 评论