![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题
算法题
小陆同学574
这个作者很懒,什么都没留下…
展开
-
买不到的数目
买不到的数目问题描述小明开了一家糖果店。他别出心裁:把水果糖包成 4 颗一包和 7 颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是 17。大于 17 的任何数字都可以用 4 和 7 组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入格式两个正整数,表示每种包装中糖的颗数(都不多于 1000)输出格式一个正整数,表转载 2021-08-08 02:52:14 · 533 阅读 · 0 评论 -
错误票据
错误票据问题描述某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的 ID 号。全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个ID 重号。你的任务是通过编程,找出断号的 ID 和重号的 ID。假设断号不可能发生在最大和最小号输入格式要求程序首先输入一个整数 N(N<100)表示后面数据行数。接着读入 N 行数据。每行数据长度不等,是用空格分开的若干个(不大于原创 2021-08-08 01:42:25 · 80 阅读 · 0 评论 -
连号区间数
连号区间数问题描述在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L, R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 R-L+1 的“连续”数列,则称这个区间连号区间。输入格式第一行是一个正整数 N (1 <= N <= 50000), 表示全排列的规模。第二行是 N 个不同的数字 Pi(1 <= Pi <= N), 表示这 N 个数字的某一全排列。输出格式输出一个整数,表示不同连号区间的原创 2021-07-31 02:40:09 · 261 阅读 · 0 评论 -
翻硬币
翻硬币问题描述小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度&原创 2021-07-31 01:59:17 · 128 阅读 · 0 评论 -
带分数
带分数问题描述100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含 0)。类似这样的带分数,100 有 11 种表示法。输入格式从标准输入读入一个正整数 N (N<1000*1000)输出格式程序输出该数字用数码 1~9 不重复不遗漏地组成带分数表示的全部种数。注意:不要求输出每个表示,只统计有多少表示法!样例输入 1100样例输原创 2021-07-31 01:03:53 · 146 阅读 · 0 评论 -
打印十字图
问题描述小明为某机构设计了一个十字型的徽标,如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$原创 2021-07-29 03:48:49 · 364 阅读 · 1 评论 -
核桃的数量
核桃的数量问题描述1.每组分的核桃数量相同2。各组比必须能平分核桃3.尽量提供满足1、2的条件输入gesh输入包含三个正整数a、b、c,用空格分开(a、b、c < 30)输出格式输出一个整数样例输入2 4 5 样例输出20题目分析:这题就是求三个数的最小公倍数求三个数的最小公倍数 <— 求两个数的最小公倍数 <— 求两个数的最大公约数用辗转相除法求出两个数的最大公约数辗转相除法代码int gcd(int a,int b){原创 2021-07-28 21:03:29 · 118 阅读 · 0 评论 -
二分查找
二分查找问题描述给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1样例输入nums=[-1,0,3,5,9,12], target=9样例输出4样例输入nums=[-1,0,3,5,9,12], target=2样例输出-1提示:你可以假设nums中的所有元素是不重复的n将在[1,10000]之间nums的每个元素都将在[-9999,9999]之间思路分析既然给定数组已经原创 2021-07-28 00:17:07 · 39 阅读 · 0 评论 -
K好数
K好数问题描述如果一个自然数N的K进制表示中的任意的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制中K好数的数目。例如 K = 4,L = 2 的时候所有K好数为 11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值输入格式输入包含两个正整数,K和L输出格式输出一个整数,表示答案对1000000007取模后的值样例输入4 2 样例输出7数据规模与约定对于30%的数据,KL<= 106;对于50%的原创 2021-07-26 14:12:28 · 143 阅读 · 0 评论 -
最大最小公倍数
最大最小公倍数问题描述已知一个正整数N,问从1~N-1中任选出三个数,它们的最小公倍数最大可以是多少输入格式输入一个正整数N输出格式输出一个整数,表示你找到的最小公倍数样例输入9样例输出504数据规模与约定1 <= N <= 10^6解题思路如果最大的三个数互质,那么结果就是这三个数的乘积**当N为奇数时:*N 与 N-2都是奇数,N-1 是偶数,这三个数是连续的,所以大于等于2 的数都不是他们两个或三个数的公约数,结果就是 N(N-1)*(N-2)原创 2021-07-23 13:38:44 · 52 阅读 · 0 评论 -
区间大数查询
区间大数查询问题描述给定一个序列,每次询问序列中第一个数到第K个r个数中第K大的数是哪一个输入格式第一行包含一个整数n,表示序列长度第二行包含n个正整数,表示给定的序列第三行包含一个正整数m,表示询问个数接下来第m行,每行三个数 l,r,k, 表示询问序列从左往右第l个数到第r个数中,从大到小第k大的数是哪一个。序列元素从1开始标号输出格式总共输出m行,每行一个数,表示询问的答案样例输入51 2 3 4 5 21 5 22 3 2样例输出42 数据规模与约定 对原创 2021-07-23 12:33:03 · 74 阅读 · 0 评论 -
数列排序
数列排序问题描述给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=20000输入格式第一行为一个 整数n第二行包括n个整数,为待排序的数,每个整数的绝对值小于20000输出格式输出一行,按从小到大的顺序输出排序后的数列样例输入58 3 6 4 9 样例输出3 4 6 8 9 方法一:冒泡排序法import java.util.Scanner;public class SequenceOfSorting { public stati原创 2021-07-21 17:14:27 · 226 阅读 · 0 评论 -
特殊回文数
问题描述123321是一个非常特殊的数,它从左边和右边读是一样的输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数之和等于n输入格式输入一行包括一个正整数n输出格式按从小到大的顺序输出满足条件的整数,每个整数占一行样例输入52样例输出899998989989998899数据规模和约定1 <= n <=54方法一:遍历输出import java.util.Scanner;public class 特殊回文数 { public st原创 2021-07-20 21:39:37 · 55 阅读 · 0 评论 -
字母图形
字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行包括两个整数n和m,分别表示你要输出的图形的行数和列数输出格式输出n行,每个m个字母,为你的图形样例输入5 7样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1 <= n, m <=原创 2021-07-17 16:56:38 · 92 阅读 · 0 评论 -
找不同
找不同问题描述:给定两个字符串s和t;它们只包含小写字母。字符串t由字符串s重排,然后在随机位置添加一个字母。请找出t中被添加的字母。示例1:输入:s = “abcd” t = “abcde”输出:“e”示例2输入:s = “ ” t = “y”输出:“y”提示:0 <=s.length <= 1000t.length == s.length + 1s和t只包含小写字母方法一:异或位运算(最优解)解题思路t比s多了一个字母,那就是只有一个字母出现了原创 2021-07-16 16:52:17 · 231 阅读 · 0 评论 -
01字串
问题描述:对于长度为5位的01串,每一位都可能是9或1,一共有32种可能。它们前几个是:00000000010001000100请按从小到大的顺序写出这几种01串。输出格式:输出32行,按从小到大的顺序每一行一个长度为5的01串解题思路0~32转成二进制输出即得该题所求输出32行,最后一行应该输出31的5位二进制: 1 1111 ,对应2^4 = 16 , 2^3 = 8 , 2^2 = 4 , 2^1 = 2 , 2^0 = 131 % 32 /16= 1; 31原创 2021-07-15 19:38:36 · 181 阅读 · 0 评论 -
最长回文子串
问题描述给你一个字符串s,找到s中最长的回文子串示例1:输入:s = "babad"输出:"bab"示例2:输入:s = "cbbd"输出:"bb"解题思路:https://www.bilibili.com/video/BV1SE411y7RW?from=search&seid=2950817619903450615https://www.bilibili.com/video/BV124411X7Ly?from=search&seid=18362855079906原创 2021-07-14 23:58:58 · 41 阅读 · 0 评论 -
两数相加
两数相加问题描述:给你两个非空链表,表示两个非负整数。他们的每位数字都是按照逆序方式储存,且每个节点只能储存一位数。请你将两个数相加,并以相同形式返回一个表示和的链表。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Qxxy0xH-1626242868878)(file:///C:\Users\86130\Documents\Tencent Files\2909692915\Image\C2C\HGPQS%6S5LZIBU6]$E@W@ML.png)]输入:L1 =原创 2021-07-14 14:13:34 · 55 阅读 · 0 评论 -
C/C++进制转换
问题描述给定n个十六进制正整数,输出他们对应的八进制输入格式输入的第一行为一个正整数n(1 <= n <=10)接下来n行,每行一个由09,AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000输出格式输出n行,每行为输入对应的八进制正整数注:输入的十六进制不会有前导0,输出的八进制也没有前导0样例输入239123ABC样例输出714435274解题思路:1.利用工具函数转换包含iomanip头文件输入/输出十进制数:d原创 2021-07-13 17:01:42 · 2697 阅读 · 0 评论 -
闰年判断
问题描述给定一个年份,判断这一年是不是闰年。当以下条件满足之一时,这一年是闰年:年份是4 的倍数而不是100的倍数年份是400的倍数输入格式输入包含一个整数y,表示当前的年份输出格式输出一行,如果给定的年份是闰年,输出yes,否则输出no。样例输入2013样例输出no样例输入2016样例输出yes数据与约定1990 <= y <= 2050解题思路:我觉得这一题值得深思的地方就是如何一起判断这三个条件,那就要用到if…else 语句和&&原创 2021-07-11 19:09:53 · 215 阅读 · 0 评论 -
C++序列求和
C++序列求和问题描述求1+2+3+4+…+n的和数据规模与约定n >= 1 && n <= 1,000,000,000####解题思路本题最直观的方法就是用一个for循坏求出结果,但是注意这里的数据规模很大,用for循坏运算时间长,所以for循坏并不是最优解利用等差数列求和的公式比for循坏执行的时间更短第三个方法就是递归,但递归会保存大量临时数据和重复数据,太多的话会造成栈溢出,程序崩溃###方法一:循环累加法#include<iostre.原创 2021-07-10 23:57:51 · 3282 阅读 · 0 评论 -
Fibonaci数列
Fibonaci数列问题描述Fibnacci数列的递推公式是:Fn = Fn - 1 + Fn - 2 = 1,其中F1 = F2 = 1。输入格式输入包括一个整数n输出格式输出一行包括一个整数n,表示Fn除以10007的余数样例输入22样例输出7704数据规模与约定n >= 1 && n <= 1000000方法一:递归(直接求出第n项后再求余)这是最直接的求解方法,代码简洁,但是n的数据规模太大的话,消耗的时间和计算机的工作量都很大,所以递归并原创 2021-07-09 16:03:20 · 256 阅读 · 0 评论 -
圆的面积
圆的面积问题描述给定圆的半径r,求圆的面积输入格式输入包含一个整数r,表示圆的半径输出格式输出一行,包含一个实数,四舍五入保留小数点后7位数据规模与约定r >=1 && r <= 10000注:本题输入的是一个整数,输出是一个实数。本题对精度要求高,π应取较精确的值,比如 PI = 3.14159265358979323,也可以使用数学公式求π,比如 PI = atan(1.0)*4.解题思路C++输出流默认的有效位数包括整数和小数一共是6,原创 2021-07-09 07:32:22 · 914 阅读 · 0 评论