正确答案还没出来,有写代码的部分仅属于自己的见解。持续更新中....
A-题目描述:
请找到两个正整数X和Y满足下列条件:
1、20192、2019^2、X^2、Y^2构成等差数列
满足条件的X和Y可能有多种情况,请给出X+Y的值,并且令X+Y尽可能的小。
思路:直接暴力,sqrt函数会丢失精度,把找到的值再平方一下看看是否构成等差数列,找到的第一对 x,y值为即为答案。
#include#includeusing namespace std;
int main()
{
for(long long x = 2020;; x ++){
long long y =sqrt(2*x*x - 2019*2019);
if(x * x - 2019 * 2019 == y * y - x * x){
cout<
答案:7020
B-题目描述:
2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种?
注意:分解方案不考虑顺序,如2+2017=2019和2017+2=2019属于同一种方案。
C-题目描述:
锯7X7的木头,然后拼成直角,问有多少种锯法。
D-题目描述:
有一个7X7的方格。方格左上角顶点坐标为(0,0),右下角坐标为(7,7)。
求满足下列条件的路径条数:
1、起点和终点都是(0,0)
2、路径不自交
3、路径长度不大于12
4、对于每一个顶点,有上下左右四个方向可以走,但是不能越界。
#includeusing namespace std;
int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};
int maze[7][7],vis[7][7];
int ans = 0;
void dfs(int x,int y,int step){
if(step > 12) return;
if(step > 2 && !x && !y){
ans ++;
return;
}
for(int i = 0;i < 4;i ++){
int a = x + dx[i],b = y + dy[i];
if(a >= 0 && a < 7 && b >= 0 && b < 7 && !vis[a][b]){
vis[a][b] = 1;
dfs(a,b,step+1);
vis[a][b] = 0;
}
}
}
int main()
{
dfs(0,0,0);
cout<
答案: 206
E-题目描述:
约数的数量恰好是100的最小正整数。
#includeusing namespace std;
int main()
{
for(int i = 1;;i ++){
int ans = 0;
for(int j = i;j >= 1;j --){
if(i % j == 0){
ans ++;
}
if(ans == 100){
cout<
答案:45360
F-题目描述:
题目给定两个字符串S和T,保证S的长度不小于T的长度,问至少修改S的多少个字符,可以令T成为S的子序列。
输入描述:
两行。
第一行是字符串S,第二行是字符串T。
保证S的长度不小于T的长度,S的长度范围在10~1000之间。
输出描述:
答案,一个非负整数。
输入样例:
XBBBBBAC
ACC
输出样例:
2
G-题目描述:
三色三圈的火柴游戏。
H-题目描述:
对于一个数列中的某个数,如果这个数比两侧的数都大或比两侧的数都小,我们称这个数为这个数列的一个转折点。
如果一个数列有t个转折点,我们称这个数列为t+1调数列。
给定两个正整数n,k。求在1~n的全排列中,有多少个数列是k调数列。
I-题目描述:
有一条河,沿河的一侧生活着一个部落。这个一字型的部落有n个据点,从左至右依次编号1~n。
部落的人们有时会在某个据点建立建筑,每个建筑都有各自的价值。一开始,每个据点的都没有建筑,价值都是0。如果在已有建筑的据点建立新的建筑,那么新的建筑会代替旧的建筑(旧的建筑就此消失)。
有两种操作C和Q:
1、C x y,表示在据点x建立一个价值为y的建筑。
2、Q x y,询问在据点x~y之间(包括x,y)的建筑中,价值第八大的建筑的价值是多少。
输入描述:
第一行,两个正整数n和k,表示据点的数量和操作的数量。
接下的k行,每行一个操作。
输出描述:
对于所有的Q操作,输出相应的第八大建筑的价值。
输入样例:
10 14
C 1 5
C 2 4
C 3 7
C 4 6
C 5 5
C 6 1
C 7 8
Q 1 10
C 8 3
C 9 6
C 10 3
Q 1 9
C 6 10
Q 1 10
输出样例:
0
3
4
J-题目描述:
燃烧的权杖。