0%

『洛谷』试机题

试机题

完全没有难度的题目,抛开编程小学生都会的题目


基本输入输出

  1. 两数之和
1
2
3
4
5
6
7
8
#include <bits/stdc++.h>
using namespace std;
int main(){
long long a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
1
2
3
4
5
6
7
#include <stdio.h>
int main(){
long long a, b;
scanf("%d %d", &a, &b);
printf("%d", a + b);
return 0;
}
1
print(sum(map(int, input().split())))
1
2
3
4
5
6
7
8
9
import Java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
long long a = in.nextInt();
long long b = in.nextInt();
System.out.println(a + b);
}
}

P1000 超级玛丽游戏

题目描述

超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############

输入格式

无输入

输出格式

无输出

输入输出样例

解答代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
s = """                ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############"""
print(s)

P1001 A+B Problem

题目描述

输入两个整数 a, ba,b,输出它们的和(\(|a|,|b| \leq 10^9\) )。

注意

  1. Pascal 使用 integer 会爆掉哦!
  2. 有负数哦!
  3. C/C++ 的 main 函数必须是 int 类型,而且 C 最后要 return 0。这不仅对洛谷其他题目有效,而且也是 NOIP/CSP/NOI 比赛的要求!

好吧,同志们,我们就从这一题开始,向着大牛的路进发。

输入格式

两个以空格分开的整数。

输出格式

一个整数。

输入输出样例

输入:20 30

输出:50

解题思路

幼儿园小朋友都会的问题,主要是学习下数据的输入和输出

解答代码

1
print(sum(map(int, input().split())))
1
2
3
4
5
6
7
8
9
import Java.util.*;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt(), b = in.nextInt();
System.out.println(a + b);
}
}
1
2
3
4
5
6
7
8
#include <bits/stdc++.h>

int main() {
int a, b;
std::cin >> a >> b;
std::cout << a + b << std::endl;
return 0;
}

P1008 [NOIP1998 普及组] 三连击

题目描述

将 1,2,…,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。

输入格式

无输入

输出格式

若干行,每行 3 个数字。按照每行第 1 个数字升序排列。

输入输出样例

输入: #1

输出: #1

1
2
3
4
5
6
192 384 576
* * *
...

* * *
(剩余部分不予展示)

解题思路

枚举第一个数,然后按照比例计算出第二个数和第三个数,然后检查这三个数是否满足 由1~9组成

可以大概估算下范围:第一个数最小是 123,最大是 987 / 3 或 999 / 3

解答代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ans = []
number = "123456789"
for i in range(123, 333):
s = str(i)
if '0' in s:
continue
s = "".join([s, str(i * 2), str(i * 3)])
for n in number:
if n not in s:
break
else:
ans.append([i, i * 2, i * 3])
for a, b, c in ans:
print(a, b, c)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <bits/stdc++.h>

using namespace std;

class Solution {
public:
void threenumber(){
// vis[i] 表示 i + 1 已经有了
vector<int> vis(9, 0);
for (int i = 123; i < 333; ++i) {
int x = i, y = i * 2, z = i * 3;
while (x != 0) {
int s = x % 10;
x /= 10;
if (s == 0 || vis[s - 1] == 1) goto end;
else vis[s - 1] = 1;
}
while (y != 0) {
int s = y % 10;
y /= 10;
if (s == 0 || vis[s - 1] == 1) goto end;
else vis[s - 1] = 1;
}
while (z != 0) {
int s = z % 10;
z /= 10;
if (s == 0 || vis[s - 1] == 1) goto end;
else vis[s - 1] = 1;
}
cout << i << " " << i * 2 << " " << i * 3 << endl;
end:
for (int j = 0; j < 9; ++j) vis[j] = 0;
}
}
};

int main() {
Solution s;
s.threenumber();
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Java.util.*;

public class Main {
public static void main(String[] args) {
loop1:for (int i = 123; i < 333; ++i) {
int[] vis = new int[9];
int a = i, b = i * 2, c = i * 3;
while (a > 0) {
int s = a % 10;
a /= 10;
if (s == 0 || vis[s - 1] == 1) continue loop1;
else vis[s - 1] = 1;
}
while (b > 0) {
int s = b % 10;
b /= 10;
if (s == 0 || vis[s - 1] == 1) continue loop1;
else vis[s - 1] = 1;
}
while (c > 0) {
int s = c % 10;
c /= 10;
if (s == 0 || vis[s - 1] == 1) continue loop1;
else vis[s - 1] = 1;
}
System.out.println(Integer.toString(i) + " " + Integer.toString(i * 2) + " " + Integer.toString(i * 3));
}
}
}

--- ♥ end ♥ ---

欢迎关注我呀~