PAT B1086 就不告诉你(C++)

PAT甲级目录 | PAT乙级目录

题目描述

做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。

输入格式:

输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。

输出格式:

在一行中倒着输出 A 和 B 的乘积。

输入样例:

1
5 7

输出样例:

1
53

易错点

  • 逆转输出不要输出前导零

也许陌生的知识点

  • G[x].push_back(y);
    • 功能:往变长数组加入新元素
    • 需要头文件:vector
  • for(auto it = s.begin(); it != s.end(); it++){ 循环体; }
    • 功能:遍历一个集合,it是迭代器,*it 为迭代器指向的元素
    • 需要头文件:set
  • s.insert(id);
    • 功能:往集合中加入元素
    • 需要头文件:set

代码示例:

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
#include <iostream>
#include <vector>
#include <set>
using namespace std;
const int maxn = 100000;
int main(){
int N, M;
vector<int> G[maxn];
cin >> N >> M;
for(int i = 0; i < N; i++){
int x, y;
cin >> x >> y;
G[x].push_back(y);
G[y].push_back(x);
}
for(int i = 0; i < M; i++){
int k, id, valid = 1;
set<int> s; //用一个集合暂存清单
cin >> k;
for(int j = 0; j < k; j++){
cin >> id;
for(int l = 0; valid == 1 && l < G[id].size(); l++){
for(auto it = s.begin(); it != s.end(); it++){//寻找当前物品是否与集合中其他物品不相容
if(G[id][l] == *it){ //存在不相容的,记录非法并退出查找
valid = 0; break;
}
}
}
s.insert(id); //将当前物品加入集合
}
if(valid == 0) cout << "No\n"; //非法
else cout << "Yes\n"; //合法
}
return 0;
}