算法笔记
sauTCc
存在即合理
展开
-
算法笔记入门(算法模拟进制转换)——问题 B: 数制转换
题目描述求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。输入输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。输出可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,原创 2021-09-20 22:52:37 · 149 阅读 · 0 评论 -
算法笔记入门(算法模拟进制转换)——问题 A: 又一版 A+B
题目描述输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。输入输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。当m为0时输入结束。输出输出格式:每个测试用例的输出占一行,输出A+B的m进制数。样例输入2 4 58 123 4560样例输出10011103提示注意输入的两个数相加后的结果可能会超过int和long的范围。思路分析:两数之后可能会超过int和long的范围,原创 2021-09-20 22:38:48 · 138 阅读 · 0 评论 -
算法笔记入门(进制转换专题篇)—— 笔记总结
进制转换其实主要是两个问题,十进制数转换为Q进制数,Q进制数转换为十进制数,当然也有P进制数转换为Q进制数。1.将P进制数转换为十进制数y在这里插入代码片思路很简单,看代码很容易就明白了int y=0,product=1;while(x!=0){ y = y + (x%10)*product; x = x/10; product = product*P;}2.将十进制数转换为Q进制数这里采用的是”除基取余法“。所谓的基,是值要转换的进制Q,因此除基取余法的意思就是每次将十进制数除以.原创 2021-09-20 22:24:17 · 129 阅读 · 0 评论 -
算法笔记入门(算法模拟日期处理)——问题 E: 日期累加
题目描述设计一个程序能计算一个日期加上若干天后是什么日期输入输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。输出输出m行,每行按yyyy-mm-dd的个数输出。样例输入12008 2 3 100样例输出2008-05-13思路分析:统计日数加之后的日期,然后进行累加判断即可。#include <cstdio>bool isLeap(int year){ return (year%4==0 && year%100!=0原创 2021-09-18 17:30:52 · 70 阅读 · 0 评论 -
算法笔记入门(算法模拟日期处理)——问题 D: 日期类
题目描述编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。输入输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。输出输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。样例输入21999 10 202001 1 31样例输出1999-10-212001-02-01思路分析:区分开平年闰年,再对天数进行累加,计算日期#include <cstdio>bool isL原创 2021-09-18 17:25:36 · 93 阅读 · 0 评论 -
算法笔记入门(算法模拟日期处理)——问题 C: 打印日期
题目描述给出年分m和一年中的第n天,算出第n天是几月几号。输入输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。样例输入2013 602012 3002011 3502000 211样例输出2013-03-012012-10-262011-12-162000-07-29思路分析:在日期处理中因为存在闰年平年之分,所以有二月的差异,需要判断是否是闰年再进行年月日的判断处理#include <cstdio>bool isLe原创 2021-09-18 17:13:32 · 81 阅读 · 0 评论 -
算法笔记入门(算法模拟日期处理)——问题 B: Day of Week
题目描述We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap.Your task i原创 2021-09-18 17:03:10 · 155 阅读 · 0 评论 -
算法笔记入门(算法模拟日期处理)——问题 A: 日期差值
题目描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出每组数据输出一行,即日期差值样例输入2013010120130105样例输出5思路分析:本题是计算两个日期之间间隔天数的计算,所以需要判断是平年闰年,然后再进行计算,另外两个相邻日期之间需要注意的是算两天时间。#include <cstdio>int month[13][2] = {{0,0},{31,3原创 2021-09-18 16:34:39 · 171 阅读 · 0 评论 -
算法笔记入门(算法模拟图像)——问题 D: 沙漏图形 tri2str [1*+]
题目描述问题:输入n,输出正倒n层星号三角形。首行顶格,星号间有一空格,效果见样例输入样例:3输出样例:* * * * * * * * * * *数据规模 1<= n <=50思路分析:先输出倒三角形,再输出剩余部分即可。#include <cstdio>#include <cmath> int main(){ int n; scanf("%d",&n); int t=n; int m;原创 2021-09-15 22:26:19 · 131 阅读 · 0 评论 -
算法笔记入门(算法入门图像)——问题 C: 等腰梯形
请输入高度h,输入一个高为h,上底边长为h 的等腰梯形(例如h=4,图形如下)。 **** ****** ******************输入输入第一行表示样例数m,接下来m行每行一个整数h,h不超过10。输出对应于m个case输出要求的等腰梯形。样例输入14样例输出 **** ****** *****************思路分析:依次输出控制空格和*的输出即可#include <bits/stdc++.h>int main()原创 2021-09-15 22:24:45 · 172 阅读 · 0 评论 -
算法笔记入门(算法模拟图像)——问题 B: Hello World for U
题目描述Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, “helloworld” can be printed as:h de ll rlowoThat is, the characters must be printed in the original order, starting top-down from原创 2021-09-15 22:16:13 · 61 阅读 · 0 评论 -
算法笔记入门(算法模拟图形题)——问题 A: 输出梯形
题目描述输入一个高度h,输出一个高为h,上底边为h的梯形。输入一个整数h(1<=h<=1000)。输出h所对应的梯形。样例输入3样例输出 *** ************思路分析:依次按行输出即可。#include <bits/stdc++.h>int main(){ int h; while(scanf("%d",&h)!=EOF){ int y=h; int t=(h-1)*2;原创 2021-09-15 21:32:00 · 87 阅读 · 0 评论 -
算法笔记入门——问题 A: 剩下的树
题目描述1:有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。输入:两个整数L(1<=L<=10000)和M(1&原创 2021-09-12 11:14:42 · 178 阅读 · 0 评论 -
算法笔记入门(入门模拟查找篇)——问题 E: 学生查询
题目描述输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。输入测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),加下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。输出输出m行,每行表示查询的学生信息,格式参见样例。样例输入141 李江 男 212 刘唐 男 233 张军 男 194 王娜 女 192样例输出2 刘唐 男 23思路分析:循环遍历查原创 2021-09-15 10:50:36 · 82 阅读 · 0 评论 -
算法笔记入门(入门查找模拟篇)——问题 D: 查找
题目描述输入数组长度 n输入数组 a[1…n]输入查找个数m输入查找数字b[1…m]输出 YES or NO 查找有则YES 否则NO 。输入输入有多组数据。每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。输出如果在n个数组中输出YES否则输出NO。样例输入63 2 5 4 7 823 6样例输出YESNO思路分析:遍历查找即可,无坑#include <bits/stdc++.h>原创 2021-09-15 10:47:06 · 63 阅读 · 0 评论 -
算法笔记入门(入门模拟查找篇)——问题 C: 查找学生信息
题目描述输入N个学生的信息,然后进行查询。输入输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式如下:01 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 19然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:02030104输出输出M行,每行包括一个对应于查询的学生的信息。如果没有对应的学生信息,则输出“No Answer!”样例输入5001 张三 男原创 2021-09-15 10:44:05 · 85 阅读 · 0 评论 -
算法笔记入门(入门模拟查找篇)——问题 B: 找x
题目描述输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出对于每组输入,请输出结果。样例输入41 2 3 43样例输出2思路分析:本题很简单,直接循环遍历查找即可,测试数据有多组。#include <bits/stdc++.h>int main(){ int n; while(scanf原创 2021-09-15 10:40:59 · 77 阅读 · 0 评论 -
算法笔记入门(入门模拟查找篇)——问题 A: 统计同成绩学生人数
题目描述读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。输出对每个测试用例,将获得给定分数的学生人数输出。样例输入470 80 90 10080365 75 8555560 90 90 90 85900样例输出 Copy103思路分析,本题原创 2021-09-15 10:37:15 · 82 阅读 · 0 评论 -
算法笔记入门——问题 I: 锤子剪刀布 (20)
题目描述大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。输出输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙原创 2021-09-14 21:32:15 · 974 阅读 · 0 评论 -
算法笔记入门——问题 H: 部分A+B (15)
题目描述正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出在一行中输出PA + PB的值。样例输入3862767 6 13530293 33862767 1 13530293 8样例输出3990思路分原创 2021-09-14 21:27:08 · 87 阅读 · 0 评论 -
算法笔记入门——问题 G: 数字分类 (20)
题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位;A5 = 被5除后余4的数字中最大数字。输入每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。输出对给定的N个正整原创 2021-09-14 21:22:39 · 78 阅读 · 0 评论 -
算法笔记入门——问题 F: A+B和C (15)
题目描述给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。样例输入41 2 32 3 42147483647 0 21474836460 -2147483648 -原创 2021-09-14 21:18:25 · 202 阅读 · 0 评论 -
算法笔记入门——问题 E: Shortest Distance (20)
题目描述The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.输入Each input file contains one test case. For each case, the first line contains an integer N原创 2021-09-14 21:14:46 · 70 阅读 · 0 评论 -
算法笔记入门——问题 D: 比较奇偶数个数
题目描述第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。输入输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000)。输出如果偶数比奇数多,输出NO,否则输出YES。样例输入16770 69 24 78 58 62 64样例输出YESNO思路分析:本题为简单题,直接看代码即可,无坑。#include <bits/stdc++.h> int panduan(int n){ if(原创 2021-09-14 20:10:40 · 85 阅读 · 0 评论 -
算法笔记入门——问题C:特殊乘法
题目描述写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35输入两个小于1000000000的数输出输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。样例输入24 6542 666663 67样例输出6618039本题思路分析:本题思路相对简单,先将数字存储为字符串类型,唯一的技巧就是在读取字符转为相应的整数类型直接减去四十八再进行计算就可以了,下面原创 2021-09-14 20:03:49 · 205 阅读 · 0 评论 -
算法笔记入门——问题 B: A+B
题目描述给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出输入输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。输出请计算A+B的结果,并以正常形式输出,每组数据占一行。样例输入-234,567,890 123,456,7891,234 2,345,678样例输出-1111111012346912题目分析:改题目其实就是两数相加,只是本题输入含有原创 2021-09-12 11:36:17 · 235 阅读 · 0 评论