青少年编程知识记录 codecoming

小苹果(apple)

【题目描述】

小 Y 的桌子上放着n个苹果从左到右排成一列,编号为从1到n。

小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。

每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走2个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。

小苞想知道,多少天能拿完所有的苹果,而编号为n的苹果是在第几天被拿走的?

【输入描述】

输入的第一行包含一个正整数n,表示苹果的总数。

【输出描述】

输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的天数以及拿走编号为n的苹果是在第几天。

【样例输入】

8

【样例输出】

5 5

【提示】

说明/提示

【样例 1 解释】

小苞的桌上一共放了8个苹果。

小苞第一天拿走了编号为1、4、7的苹果。

小苞第二天拿走了编号为2、6的苹果。

小苞第三天拿走了编号为3的苹果。

小苞第四天拿走了编号为5的苹果。

小苞第五天拿走了编号为8的苹果。

【数据范围】

1n109 

测试点n≤特殊性质
1∼210
3∼5103
6∼7106
8∼9106
10109



特殊性质:小苞第一天就取走编号为n的苹果。

作者:亿万年的星光 分类:题解目录 浏览:

【题解】计算天数

【题目描述】

以 年-月-日 的形式给定一个日期,计算给定的日期是当年第几天。注意闰年二月有29天。

【输入描述】

输入格式为 yyyy-mm-dd,其中

  • yyyy 表示给定的年份,mm 表示给定的月份,dd 表示给定的日期。

  • 如果这些数字不足四位或二位,以 0 补足。

  • 保证月份与日期都是合理的。

【输出描述】

单个整数:表示输入的日期是当年的第几天。

【样例输入1】

2021-12-31

【样例输出1】

365

【样例输入2】

2022-01-01

【样例输出2】

1
作者:亿万年的星光 分类:题解目录 浏览:

【题解】最大平方因子

【题目描述】

给定一个整数 n,请找出 n 的最大平方因子。所谓平方因子,就是一个 n 的因子,且是一个完全平方数。最大平方因子就是 n 的所有平方因子中最大的数。

如 12的最大平方因子为 4,81 的最大平方因子为其本身,21 的最大平方因子为 1。

【输入描述】

单个整数表示 n。

【输出描述】

单个整数表示 n 的最大平方因子。

【样例输入1】

12

【样例输出1】

4

【样例输入2】

81

【样例输出2】

81

【样例输入3】

21

【样例输出3】

1

【数据范围】

  • 对于 50% 的数据,1≤n≤10000;

  • 对于 100% 的数据,1≤n≤10,000,000。



作者:亿万年的星光 分类:题解目录 浏览:

【题解】修改回文

【题目描述】

如果一个字符串,顺读与倒读的内容一样,称这个字符串为回文。例如 aka 是一个回文,noon 也是一个回文。

给定一个字符串,请计算最少需要修改多少个字符,才能将这个字符串变成回文。

单次修改可以将字符串中某一个位置上的字符变成任意一个其他字符。

【输入描述】

一列字符:保证字符仅由小写拉丁字母构成。

【输出描述】

单个整数:表示最少需要多少次修改才能将输入字符串变成回文。

【样例输入1】

abbc

【样例输出1】

1

【样例输入2】

aaa

【样例输出2】

0

【数据范围】

设字符串的长度为 n

  • 50% 的数据,1≤n≤1,000

  • 100% 的数据,1≤n≤1,000,000

【说明】

样例1将c修改成a

样例2不需要修改

作者:亿万年的星光 分类:题解目录 浏览:

【题解】感应门

【题目描述】

感应门会在有人经过的时候自动打开,冷却d 秒后自动关闭。如果有人在感应门打开的状态下通过,那么冷却时间会重置,重新冷却d秒后再关闭。

在一段时间内,有 n个人陆续通过了感应门,他们通过感应门的时间点分别是t1,t2,⋯,tn,请计算感应门一共开放了多少时间。

【输入描述】

第一行:两个整数n与d,n表示通过感应门的人数,d表示感应门的冷却时间。

第二行:n个整数t1,t2,⋯,tn,每个数字表达一个人通过感应门的时间点。

【输出描述】

单个整数,表示感应门总共开启了多少时间。

【样例输入】

7 3  1 2 7 10 15 17 22

【样例输出】

18

【数据范围】

对于 50% 的数据,1≤n≤1000;  对于 100% 的数据,1≤n≤100,000;  1≤t1≤t2≤t3≤⋯≤tn≤1,000,000,000;  1≤d≤1,000,000,000。
作者:亿万年的星光 分类:题解目录 浏览:

【题解】二分法查找左边界

参考代码:# include <bits/stdc++.h> using namespace std; int a[100005];  int n,m,x; //数组大小,要查找的数大小,每次要查找的数  int main() { // freopen("1.in","r",stdin); // freopen("1.ou
作者:亿万年的星光 分类:题解目录 浏览:

【题解】解密

【题目描述】

给定一个正整数k,有k次询问,每次给定三个正整数ni,ei,di,求两个正整数pi,qi。

使ni=pi *  qi,  ei * di =(pi -1) *(qi-1) + 1

【输入描述】

第一行一个正整数k,表示有k次询问。

接下来k行,第i行三个正整数ni,di,ei。

【输出描述】

输出k行,每行两个正整数pi,qi表示答案。

为使输出统一,你应保证pi<=qi。

如果无解,请输出NO。

【样例输入】

10  770 77 5  633 1 211  545 1 499  683 3 227  858 3 257  723 37 13  572 26 11  867 17 17  829 3 263  528 4 109

【样例输出】

2 385  NO  NO  NO  11 78  3 241  2 286  NO  NO  6 88

【数据范围】

    m=n-e*d +2

    保证对于100的数据,1<=k<=10^5,对于任意的1<=i<=k,1<=ni<=10^18,

    1<=ei*di<=10^18,  1<=m<=10^9

标签: cspj2022

作者:亿万年的星光 分类:题解目录 浏览:

【算法】走迷宫

【题目描述】

一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。

给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。

【输入描述】

第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)

接下来是R行,每行C个字符,代表整个迷宫。

空地格子用‘.’表示,有障碍物的格子用‘#’表示。

迷宫左上角和右下角都是‘.’。

【输出描述】

输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。

【样例输入】

5 5  ..###  #....  #.#.#  #.#.#  #.#..

【样例输出】

9

标签: bfs

作者:亿万年的星光 分类:题解目录 浏览:

【算法】最短路径

【题目描述】

下图表示从城市A到城市H的交通图。从图中可以看出,从城市A到城市H要经过若干个城市。现在找出一条经过城市最少的一条路线。



【输入描述】

第一行一个整数n,表示几个城市。

接下来2~n+1行,表示两个城市之间的关系(能否直达)

【输出描述】

倒序输出城市最短线路中间用”-“隔开

【样例输入】

8  1 0 0 0 1 0 1 1   0 1 1 1 1 0 1 1   0 1 1 0 0 1 1 1   0 1 0 1 1 1 0 1  1 1 0 1 1 1 0 0   0 0 1 1 1 1 1 0  1 1 1 0 0 1 1 0  1 1 1 1 0 0 0 1

【样例输出】

H-F-A

标签: bfs

作者:亿万年的星光 分类:题解目录 浏览:

【算法】最少步数

【题目描述】

在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100×100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一个走黑马,一个走白马。谁用最少的步数走到左上角坐标为(1,1)的点时,谁获胜。现在他请你帮忙,给你A、B两点的坐标,想知道两个位置到(1,1)点可能的最少步数。

【输入描述】

A、B两点的坐标。

【输出描述】

最少步数

【样例输入】

12 16  18 10

【样例输出】

8  9

标签: dfsbfs

作者:亿万年的星光 分类:题解目录 浏览: