Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_algorithm
提交
7ddf3532
S
skill_tree_algorithm
项目概览
CSDN 技术社区
/
skill_tree_algorithm
通知
9
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7ddf3532
编写于
10月 28, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update exercises
上级
fdc89a9b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
430 addition
and
121 deletion
+430
-121
data/1.算法初阶/1.蓝桥杯/9数算式/solution.md
data/1.算法初阶/1.蓝桥杯/9数算式/solution.md
+193
-1
data/1.算法初阶/1.蓝桥杯/倍数问题/solution.md
data/1.算法初阶/1.蓝桥杯/倍数问题/solution.md
+115
-6
data/1.算法初阶/1.蓝桥杯/八次求和/config.json
data/1.算法初阶/1.蓝桥杯/八次求和/config.json
+0
-7
data/1.算法初阶/1.蓝桥杯/八次求和/desc.md
data/1.算法初阶/1.蓝桥杯/八次求和/desc.md
+0
-27
data/1.算法初阶/1.蓝桥杯/八次求和/solution.cpp
data/1.算法初阶/1.蓝桥杯/八次求和/solution.cpp
+0
-0
data/1.算法初阶/1.蓝桥杯/八次求和/solution.java
data/1.算法初阶/1.蓝桥杯/八次求和/solution.java
+0
-16
data/1.算法初阶/1.蓝桥杯/八次求和/solution.md
data/1.算法初阶/1.蓝桥杯/八次求和/solution.md
+0
-58
data/1.算法初阶/1.蓝桥杯/比酒量/solution.md
data/1.算法初阶/1.蓝桥杯/比酒量/solution.md
+122
-6
未找到文件。
data/1.算法初阶/1.蓝桥杯/9数算式/solution.md
浏览文件 @
7ddf3532
...
...
@@ -16,7 +16,10 @@
## aop
### before
```
cpp
#include <bits/stdc++.h>
using
namespace
std
;
int
bei
[
10
];
map
<
long
long
,
int
>
mp
;
```
### after
```
cpp
...
...
@@ -25,21 +28,210 @@
## 答案
```
cpp
int
main
()
{
int
a
[
9
]
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
int
res
=
0
;
do
{
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
memset
(
bei
,
0
,
sizeof
(
bei
));
long
long
int
ans
,
left
=
0
,
right
=
0
,
t
=
0
,
x
=
0
,
y
=
0
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
{
left
=
left
*
10
+
a
[
j
];
}
x
=
left
;
x
=
x
*
10
;
for
(
int
k
=
i
+
1
;
k
<
9
;
k
++
)
{
right
=
right
*
10
+
a
[
k
];
x
=
x
*
10
+
a
[
k
];
}
y
=
right
;
y
=
y
*
10
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
y
=
y
*
10
+
a
[
j
];
ans
=
left
*
right
;
long
long
int
ff
=
ans
;
while
(
ans
>
0
)
{
int
x
=
ans
%
10
;
ans
=
ans
/
10
;
if
(
bei
[
x
]
==
0
&&
x
!=
0
)
{
bei
[
x
]
=
1
;
t
++
;
}
}
if
(
t
==
9
&&
mp
.
count
(
x
)
==
0
&&
mp
.
count
(
y
)
==
0
)
{
res
++
;
mp
[
x
]
=
1
;
mp
[
y
]
=
1
;
}
}
}
while
(
next_permutation
(
a
,
a
+
9
));
cout
<<
res
<<
endl
;
return
0
;
}
```
## 选项
### A
```
cpp
int
main
()
{
int
a
[
9
]
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
int
res
=
0
;
while
(
next_permutation
(
a
,
a
+
9
))
{
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
memset
(
bei
,
0
,
sizeof
(
bei
));
long
long
int
ans
,
left
=
0
,
right
=
0
,
t
=
0
,
x
=
0
,
y
=
0
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
{
left
=
left
*
10
+
a
[
j
];
}
x
=
left
;
x
=
x
*
10
;
for
(
int
k
=
i
+
1
;
k
<
9
;
k
++
)
{
right
=
right
*
10
+
a
[
k
];
}
y
=
right
;
y
=
y
*
10
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
y
=
y
*
10
+
a
[
j
];
ans
=
left
*
right
;
long
long
int
ff
=
ans
;
while
(
ans
>=
0
)
{
int
x
=
ans
%
10
;
ans
=
ans
/
10
;
if
(
bei
[
x
]
==
0
&&
x
!=
0
)
{
bei
[
x
]
=
1
;
t
++
;
}
}
if
(
mp
.
count
(
x
)
==
0
&&
mp
.
count
(
y
)
==
0
)
{
res
++
;
mp
[
x
]
=
1
;
mp
[
y
]
=
1
;
}
}
};
cout
<<
res
<<
endl
;
return
0
;
}
```
### B
```
cpp
int
main
()
{
int
a
[
9
]
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
int
res
=
0
;
do
{
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
memset
(
bei
,
0
,
sizeof
(
bei
));
long
long
int
ans
,
left
=
0
,
right
=
0
,
t
=
0
,
x
=
0
,
y
=
0
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
{
left
=
left
*
10
+
a
[
j
];
}
x
=
left
;
x
=
x
*
10
;
for
(
int
k
=
i
+
1
;
k
<
9
;
k
++
)
{
right
=
right
*
10
+
a
[
k
];
x
=
x
*
10
+
a
[
k
];
}
y
=
right
;
y
=
y
*
10
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
y
=
y
*
10
+
a
[
j
];
long
long
int
ff
=
ans
;
while
(
ans
>
0
)
{
int
x
=
ans
%
10
;
ans
=
ans
/
10
;
if
(
bei
[
x
]
==
0
&&
x
!=
0
)
{
bei
[
x
]
=
1
;
t
++
;
}
}
if
(
t
==
9
&&
mp
.
count
(
x
)
==
0
&&
mp
.
count
(
y
)
==
0
)
{
res
++
;
mp
[
x
]
=
1
;
mp
[
y
]
=
1
;
}
}
}
while
(
next_permutation
(
a
,
a
+
9
));
cout
<<
res
<<
endl
;
return
0
;
}
```
### C
```
cpp
int
main
()
{
int
a
[
9
]
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
int
res
=
0
;
while
(
next_permutation
(
a
,
a
+
9
))
{
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
memset
(
bei
,
0
,
sizeof
(
bei
));
long
long
int
ans
,
left
=
0
,
right
=
0
,
t
=
0
,
x
=
0
,
y
=
0
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
{
left
=
left
*
10
+
a
[
j
];
}
x
=
left
;
x
=
x
*
10
;
for
(
int
k
=
i
+
1
;
k
<
9
;
k
++
)
{
right
=
right
*
10
+
a
[
k
];
}
y
=
right
;
y
=
y
*
10
;
for
(
int
j
=
0
;
j
<=
i
;
j
++
)
y
=
y
*
10
+
a
[
j
];
ans
=
left
*
right
;
long
long
int
ff
=
ans
;
while
(
ans
>
0
)
{
int
x
=
ans
%
10
;
ans
=
ans
/
10
;
if
(
bei
[
x
]
==
0
&&
x
!=
0
)
{
bei
[
x
]
=
1
;
t
++
;
}
}
if
(
t
==
9
&&
mp
.
count
(
x
)
==
0
&&
mp
.
count
(
y
)
==
0
)
{
res
++
;
mp
[
x
]
=
1
;
mp
[
y
]
=
1
;
}
}
};
cout
<<
res
<<
endl
;
return
0
;
}
```
data/1.算法初阶/1.蓝桥杯/倍数问题/solution.md
浏览文件 @
7ddf3532
...
...
@@ -30,30 +30,139 @@
## aop
### before
```
cpp
#include <bits/stdc++.h>
#include <string>
#include <queue>
#include <set>
#include <cstring>
#include <cmath>
#include <algorithm>
#define MAX 1000000000
using
namespace
std
;
int
n
,
k
,
a
[
100010
];
int
b
[
4
];
int
flag
=
0
;
```
### after
```
cpp
int
main
()
{
cin
>>
n
>>
k
;
a
[
0
]
=
MAX
;
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
cin
>>
a
[
i
];
sort
(
a
+
1
,
a
+
n
+
1
);
reverse
(
a
+
1
,
a
+
n
+
1
);
dfs
(
a
,
n
,
1
);
return
0
;
}
```
## 答案
```
cpp
void
dfs
(
int
a
[],
int
n
,
int
s
)
{
if
(
flag
==
1
)
return
;
if
(
s
==
4
)
{
int
sum
=
b
[
1
]
+
b
[
2
]
+
b
[
3
];
if
(
sum
%
k
==
0
)
{
flag
=
1
;
cout
<<
sum
<<
endl
;
}
return
;
}
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
if
(
a
[
i
]
<
a
[
s
-
1
])
{
b
[
s
]
=
a
[
i
];
dfs
(
a
,
n
,
s
+
1
);
}
}
}
```
## 选项
### A
```
cpp
void
dfs
(
int
a
[],
int
n
,
int
s
)
{
if
(
flag
==
1
)
return
;
if
(
s
==
4
)
{
int
sum
=
b
[
1
]
+
b
[
2
]
+
b
[
3
];
if
(
sum
%
k
==
0
)
{
flag
=
1
;
cout
<<
sum
<<
endl
;
}
return
;
}
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
if
(
a
[
i
]
<
a
[
s
-
1
])
{
b
[
s
]
=
a
[
i
];
dfs
(
a
,
n
,
s
);
}
}
}
```
### B
```
cpp
void
dfs
(
int
a
[],
int
n
,
int
s
)
{
if
(
flag
==
1
)
return
;
if
(
s
==
4
)
{
int
sum
=
b
[
1
]
+
b
[
2
]
+
b
[
3
];
if
(
sum
%
k
==
0
)
{
flag
=
1
;
cout
<<
sum
<<
endl
;
}
return
;
}
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
if
(
a
[
i
]
<
a
[
s
+
1
])
{
b
[
s
]
=
a
[
i
];
dfs
(
a
,
n
,
s
+
1
);
}
}
}
```
### C
```
cpp
void
dfs
(
int
a
[],
int
n
,
int
s
)
{
if
(
flag
==
1
)
return
;
if
(
s
==
4
)
{
int
sum
=
b
[
1
]
+
b
[
2
]
+
b
[
3
];
if
(
sum
%
k
==
0
)
{
flag
=
1
;
cout
<<
sum
<<
endl
;
}
return
;
}
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
{
if
(
a
[
i
]
<
a
[
s
+
1
])
{
b
[
s
]
=
a
[
i
];
dfs
(
a
,
n
,
s
);
}
}
}
```
data/1.算法初阶/1.蓝桥杯/八次求和/config.json
已删除
100644 → 0
浏览文件 @
fdc89a9b
{
"node_id"
:
"569d5e11c4fc5de7844053d9a733c5e8"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/1.算法初阶/1.蓝桥杯/八次求和/desc.md
已删除
100644 → 0
浏览文件 @
fdc89a9b
#### 问题描述
给定正整数 n, 求 1^8 + 2^8 +···+ n^8 mod 123456789 。其中 mod 表示取余。
#### 输入格式
输入的第一行包含一个整数 n。
#### 输出格式
输出一行,包含一个整数,表示答案。
#### 样例输入
```
2
```
#### 样例输出
```
257
```
#### 样例输入
```
987654
```
#### 样例输出
```
43636805
```
#### 评测用例规模与约定
对于 20% 的评测用例,1≤n≤20。
对于 60% 的评测用例,1≤n≤1000。
对于所有评测用例,1≤n≤1000000。
\ No newline at end of file
data/1.算法初阶/1.蓝桥杯/八次求和/solution.cpp
已删除
100644 → 0
浏览文件 @
fdc89a9b
data/1.算法初阶/1.蓝桥杯/八次求和/solution.java
已删除
100644 → 0
浏览文件 @
fdc89a9b
import
java.util.Scanner
;
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
int
mod
=
123456789
;
Scanner
s
=
new
Scanner
(
System
.
in
);
int
n
=
s
.
nextInt
();
long
result
=
0
;
for
(
long
i
=
1
;
i
<=
n
;
i
++){
//遍历1~n
long
temp
=
1
;
for
(
int
j
=
1
;
j
<=
4
;
j
++){
//对每一个 i 进行八次乘方,四次循环,每次循环里面计算一次平方
temp
=(
temp
*((
i
*
i
)
%
mod
))%
mod
;
//计算平方并取模,防止溢出 }
result
=(
result
+
temp
)%
mod
;
//把每一次 i 循环得到的八次方结果汇总到变量 result 中。
}
System
.
out
.
println
(
result
);
//打印输出 resualt
}
}
data/1.算法初阶/1.蓝桥杯/八次求和/solution.md
已删除
100644 → 0
浏览文件 @
fdc89a9b
# 八次求和
#### 问题描述
给定正整数 n, 求 1^8 + 2^8 +···+ n^8 mod 123456789 。其中 mod 表示取余。
#### 输入格式
输入的第一行包含一个整数 n。
#### 输出格式
输出一行,包含一个整数,表示答案。
#### 样例输入
```
2
```
#### 样例输出
```
257
```
#### 样例输入
```
987654
```
#### 样例输出
```
43636805
```
#### 评测用例规模与约定
对于 20% 的评测用例,1≤n≤20。
对于 60% 的评测用例,1≤n≤1000。
对于所有评测用例,1≤n≤1000000。
## aop
### before
```
cpp
```
### after
```
cpp
```
## 答案
```
cpp
```
## 选项
### A
```
cpp
```
### B
```
cpp
```
### C
```
cpp
```
data/1.算法初阶/1.蓝桥杯/比酒量/solution.md
浏览文件 @
7ddf3532
...
...
@@ -19,30 +19,146 @@
## aop
### before
```
cpp
#include <cstdio>
#include <iostream>
using
namespace
std
;
int
d
,
a1
[
4
];
```
### after
```
cpp
int
main
()
{
for
(
int
sum
=
20
;
sum
>=
1
;
sum
--
)
{
for
(
int
a
=
1
;
a
<=
20
;
a
++
)
{
for
(
int
b
=
1
;
b
<=
20
;
b
++
)
{
for
(
int
c
=
1
;
c
<=
20
;
c
++
)
{
a1
[
0
]
=
sum
,
a1
[
1
]
=
a
,
a1
[
2
]
=
b
,
a1
[
3
]
=
c
;
if
(
getS
(
a1
)
==
a1
[
0
]
&&
a
>
b
&&
b
>
c
&&
sum
>
a
)
{
printf
(
"%d, %d, %d, %d, 0
\n
"
,
sum
,
a
,
b
,
c
);
}
}
}
}
}
return
0
;
}
```
## 答案
```
cpp
int
d1
(
int
*
a1
)
{
int
sum
=
a1
[
0
];
for
(
int
i
=
1
;
i
<
4
;
i
++
)
{
if
(
sum
%
a1
[
i
]
!=
0
)
return
i
;
}
return
0
;
}
int
getS
(
int
*
a1
)
{
int
sum
=
0
,
ss
=
1
;
while
(
d1
(
a1
)
!=
0
)
{
int
index
=
d1
(
a1
);
a1
[
0
]
=
a1
[
0
]
*
a1
[
index
];
ss
=
a1
[
index
];
}
for
(
int
i
=
1
;
i
<
4
;
i
++
)
{
sum
+=
(
a1
[
0
]
/
a1
[
i
]);
}
return
sum
+
ss
;
}
```
## 选项
### A
```
cpp
int
d1
(
int
*
a1
)
{
int
sum
=
a1
[
0
];
for
(
int
i
=
1
;
i
<
4
;
i
++
)
{
if
(
sum
%
a1
[
i
]
!=
0
)
return
i
;
}
return
0
;
}
int
getS
(
int
*
a1
)
{
int
sum
=
0
,
ss
=
1
;
while
(
d1
(
a1
)
!=
0
)
{
int
index
=
d1
(
a1
);
a1
[
0
]
=
a1
[
0
]
*
a1
[
index
];
ss
=
a1
[
index
];
}
for
(
int
i
=
1
;
i
<=
4
;
i
++
)
{
sum
+=
(
a1
[
0
]
/
a1
[
i
]);
}
return
sum
+
ss
;
}
```
### B
```
cpp
int
d1
(
int
*
a1
)
{
int
sum
=
a1
[
0
];
for
(
int
i
=
1
;
i
<=
4
;
i
++
)
{
if
(
sum
%
a1
[
i
]
!=
0
)
return
i
;
}
return
0
;
}
int
getS
(
int
*
a1
)
{
int
sum
=
0
,
ss
=
1
;
while
(
d1
(
a1
)
!=
0
)
{
int
index
=
d1
(
a1
);
a1
[
0
]
=
a1
[
0
]
*
a1
[
index
];
ss
=
a1
[
index
];
}
for
(
int
i
=
1
;
i
<=
4
;
i
++
)
{
sum
+=
(
a1
[
0
]
/
a1
[
i
]);
}
return
sum
+
ss
;
}
```
### C
```
cpp
int
d1
(
int
*
a1
)
{
int
sum
=
a1
[
0
];
for
(
int
i
=
1
;
i
<
4
;
i
++
)
{
if
(
sum
%
a1
[
i
]
!=
0
)
return
i
;
}
return
0
;
}
int
getS
(
int
*
a1
)
{
int
sum
=
0
,
ss
=
1
;
while
(
d1
(
a1
)
!=
0
)
{
int
index
=
d1
(
a1
);
a1
[
0
]
=
a1
[
0
]
*
a1
[
index
];
ss
=
a1
[
index
];
sum
+=
ss
;
}
return
sum
;
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录