提交 9cf44ac3 编写于 作者: 每日一练社区's avatar 每日一练社区

update 7 pat exercises

上级 6c71fe22
......@@ -5,3 +5,5 @@ __pycache__
*.pyc
*.zip
help.py
test.cpp
a.out
\ No newline at end of file
## 标题
格式化输出
## 题目描述
将两数相加,输出结果每三位用“,”隔开
#### 输入
```
1000 9
```
#### 输出
```
1,009
```
#### 输入
```
14 7
```
#### 输出
```
21
```
\ No newline at end of file
#include <stdio.h>
void dfs(int n, int cnt)
{
// 递归出口
if (n == 0)
return;
// 递归输出左边到右边倒数第二个数
dfs(n / 10, ++cnt);
// 这里n>=10是为了防止对于n是个位数的时候左边多一个,的问题
if (n >= 10 && cnt % 3 == 0)
{
putchar(',');
}
// 输出右边一位数字
printf("%d", n % 10);
}
int main()
{
int a, b, res;
scanf("%d", &a);
scanf("%d", &b);
res = a + b;
// 如果res小于0,输出一个负号转换为整数处理
// 如果res等于0,直接输出0
// 否则直接dfs输出
if (res < 0)
{
putchar('-');
res = -res;
dfs(res, 0);
}
else if (res == 0)
{
putchar('0');
}
else
{
dfs(res, 0);
}
return 0;
}
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
多项式相加
## 题目描述
给定两个多项式的信息,让我们求两个多项式相加的结果。每一个多项式输入一行,第一个数字是多项式的项数 后面每两个数据一组为一个项,分别是指数和系数。 输入的数据按照**指数递减**的顺序。
#### 输入
```
2 3 2.1 2 1.0
2 3 0.0 2 0.1
```
#### 输入解释
```
第一行第一个数字 2 ,表示两项:3*2.1 + 2*1.0
第一行第一个数字 2 ,表示两项:3*0.0 + 2*0.1
```
#### 输出
2 3 2.1 2 1.1
#### 输出解释
```
第一行第一个数字 2 ,表示两项:3*(2.1 + 0.0) + 2*(1.0 + 0.1)
合并后:3*2.1 + 2*1.1
```
\ No newline at end of file
#include <iostream>
using namespace std;
int amount = 0;
void store(int cases, double a[])
{
int index = 0;
double value = 0;
for (int i = 0; i < cases; i++)
{
cin >> index;
cin >> value;
a[index] += value;
}
}
int main()
{
double a[2000] = {};
int cases;
cin >> cases;
store(cases, a);
cin >> cases;
store(cases, a);
for (int i = 0; i < 1999; i++)
if (a[i] != 0)
amount++;
cout << amount;
for (int i = 1999; i >= 0; i--)
{
if (a[i] != 0.0 && a[i] != 0)
printf(" %d %.1f", i, a[i]);
}
return 0;
}
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
最短路径数
## 题目描述
现给定一张无向图(节点有权),求从一点出发到另一点的最短路径的条数,以及经过节点的权之和的最大值。
![](https://img-blog.csdn.net/20140219093337421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnRhbmdyZW5qaWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
#### 输入
```
4 5 0 3
1 4 1 2
0 1 1
0 2 2
0 3 4
1 2 1
2 3 2
```
#### 输入解释
第一行:4 5 0 3 表示4个点,总共5条路径,求从0号点到3号点的最短路径的条数及经过节点的权之和和的最大值
第二行:1 4 1 2 表示0号点的权值为1,1号点的权值为4,2号点的权值为1,3号点的权值为2
接下来的5行,表示5条路径的长度。
0号点与1号点之间的路径长度为1
0号点与2号点之间的路径长度为2
0号点与3号点之间的路径长度为4
1号点与2号点之间的路径长度为1
2号点与3号点之间的路径长度为2
#### 输出
```
3 8
```
\ No newline at end of file
#include <iostream>
using namespace std;
#define MAXV 500
const int INF = 0x3fffffff;
int dis[MAXV][MAXV], d[MAXV], num[MAXV] = {0}, weight[MAXV], w[MAXV] = {0};
bool vis[MAXV] = {false};
int n, m, st, ed;
void dijkstra(int s)
{
fill(d, d + MAXV, INF);
d[s] = 0;
w[s] = weight[s];
num[s] = 1;
for (int i = 0; i < n; i++)
{
int v = -1, mindis = INF;
for (int j = 0; j < n; j++)
{
if (!vis[j] && d[j] < mindis)
{
mindis = d[j];
v = j;
}
}
if (v == -1 || v == ed)
return;
vis[v] = true;
for (int j = 0; j < n; j++)
{
if (!vis[j] && dis[v][j] != INF)
{
if (d[v] + dis[v][j] < d[j])
{
d[j] = d[v] + dis[v][j];
num[j] = num[v];
w[j] = weight[j] + w[v];
}
else if (d[v] + dis[v][j] == d[j])
{
num[j] += num[v];
if (weight[j] + w[v] > w[j])
w[j] = weight[j] + w[v];
}
}
}
}
}
int main()
{
fill(dis[0], dis[0] + MAXV * MAXV, INF);
scanf("%d%d%d%d", &n, &m, &st, &ed);
for (int i = 0; i < n; i++)
scanf("%d", &weight[i]);
for (int i = 0; i < m; i++)
{
int s, e, l;
scanf("%d%d%d", &s, &e, &l);
dis[s][e] = dis[e][s] = l;
}
dijkstra(st);
printf("%d %d", num[ed], w[ed]);
return 0;
}
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
求每一层叶子节点的个数
## 题目描述
输入一个值表示树中节点总数,另一个数表示非叶节点总数,接下来就是输入树的层次结构。要求判断出每一层有多少个叶节点并且输出
#### 输入
```
2 1
01 1 02
```
#### 输入解释
每个输入文件包含一个测试用例。每一种情况都以包含0 < N < 100(树中的节点数)和M (< N)(非叶节点数)的行开始。接下来是M行,每一行的格式如下:
```
ID K ID[1] ID[2] ... ID[K]
```
其中ID是一个两位数,表示给定的非叶节点,K是它的子节点的编号,后面是它的子节点的两位数ID序列。为了简单起见,让我们将根ID修改为01。
#### 输出
```
0 1
```
#### 输出解释
对于每个测试用例,您都应该从根开始计算没有孩子的家庭成员。数字必须在一行中打印,用空格隔开,并且在每行的末尾不能有额外的空格。
示例示例表示一棵只有2个节点的树,其中01是根节点,02是唯一的子节点。因此在根01层上,有0个叶节点;下一层,有1个叶节点。然后我们应该在一行中输出“0 1”。
\ No newline at end of file
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int e[300], h[300], nex[300];
int idx;
int cnt[300], mx_dep;
void add(int u, int v)
{
e[idx] = v, nex[idx] = h[u], h[u] = idx++;
}
void dfs(int u, int dep)
{
if (h[u] == -1) //叶子结点
{
cnt[dep]++;
mx_dep = max(mx_dep, dep);
return;
}
for (int i = h[u]; ~i; i = nex[i])
dfs(e[i], dep + 1);
}
int main()
{
int n, m;
cin >> n >> m;
memset(h, -1, sizeof h);
for (int i = 0; i < m; i++)
{
int id, k;
cin >> id >> k;
while (k--)
{
int b;
cin >> b;
add(id, b);
}
}
dfs(1, 0);
cout << cnt[0];
for (int i = 1; i <= mx_dep; i++)
cout << ' ' << cnt[i];
return 0;
}
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
以英文单词形式,输出长整数的各数位之和的每一位。
## 题目描述
给一个 100 位以内的数,计算所有数字之和,并将结果的每一位用英文表示。
#### 输入
```
12345
```
#### 输出
```
one five
```
\ No newline at end of file
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstdlib>
using namespace std;
string english[10] = {
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
};
int main()
{
string s, charchater;
cin >> s;
int sum = 0;
for (int i = 0; i < s.size(); i++)
{
charchater = s[i];
sum += stoi(charchater);
}
vector<string> result;
if (sum != 0)
{
while (sum != 0)
{
result.push_back(english[sum % 10]);
sum = sum / 10;
}
cout << result.back();
result.pop_back();
while (!result.empty())
{
cout << " " << result.back();
result.pop_back();
/* code */
}
}
else
{
cout << "zero" << endl;
}
return 0;
}
// stoi string to int string to long
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
找卷王
## 题目描述
给你每个人的编号和他的上班打卡时间,下班打卡的时间,问谁最早来,谁最迟走。
#### 输入
```
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40
```
#### 输出
```
SC3021234 CS301133
```
\ No newline at end of file
#include <bits/stdc++.h>
using namespace std;
int main()
{
string open_time = "99:99:99", close_time, open_id, close_id;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
string id, in_time, out_time;
cin >> id >> in_time >> out_time;
if (in_time < open_time)
{
open_id = id;
open_time = in_time;
}
if (out_time > close_time)
{
close_time = out_time;
close_id = id;
}
}
cout << open_id << ' ' << close_id << endl;
return 0;
}
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
最大连续子列和
## 题目描述
给定k个整数的序列:
找出最大连续子序列的和,并输出序列第一个和最后一个数字
若答案不唯一,选择左端点最小的序列
若答案仍不唯一,选择右端点最小的序列
若k个数字都是负数,则其最大和为定为0,并输出序列第一个数字和最后一个数字
例如序列:```{-1, 10, -4, 18, -2, -1}```,则其最大连续子序列为```{10, -4, 18}```,和为```24```
#### 输入
```
5
1 2 3 4 5
```
#### 输出
```
15 1 5
```
\ No newline at end of file
#include <stdio.h>
#define MaxSize 100000
int main()
{
int K;
int i;
int a[MaxSize];
int flag = 0, zero = 0;
int ThisSum = 0, MaxSum = 0;
int tempindex = 0;
scanf("%d", &K); //输入数组长度K
int first = 0, last = K - 1;
for (i = 0; i < K; i++)
{
scanf("%d", &a[i]); //输入K个整数
if (a[i] > 0)
flag = 1; //有正整数
if (a[i] == 0)
zero = 1; //有0(一开始把==写成了=)
}
if (flag)
{
for (i = 0; i < K; i++)
{
ThisSum += a[i];
if (ThisSum > MaxSum)
{
MaxSum = ThisSum;
first = tempindex;
last = i;
}
if (ThisSum < 0)
{
ThisSum = 0;
tempindex = i + 1;
}
}
printf("%d %d %d\n", MaxSum, a[first], a[last]);
}
else if (zero)
{
printf("0 0 0\n");
}
else
{
printf("0 %d %d\n", a[first], a[last]);
}
return 0;
}
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
## 标题
## 题目描述
#### 输入
#### 输出
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册