# 6 质数因子
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
#include <bits/stdc++.h>
using namespace std;
void recursion(int n) {
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
cout << i << " ";
recursion(n / i);
return;
}
}
if (n - 1 > 0) cout << n << " ";
}
int main() {
int n;
cin >> n;
recursion(n);
return 0;
}
# 7 取近似值
描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。
数据范围:保证输入的数字在 32 位浮点数范围内
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
#include <bits/stdc++.h>
using namespace std;
int main() {
float n;
cin >> n;
cout << int(n + 0.5) << endl;
return 0;
}
# 8 合并表数值
描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr;
unordered_map<int, int> map;
while (n-- > 0) {
int key, val;
cin >> key >> val;
if (map.find(key) == map.end()) {
map[key] = val;
arr.push_back(key);
} else {
map[key] += val;
}
}
sort(arr.begin(), arr.end());
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << " " << map[arr[i]] << endl;
}
return 0;
}
#9 提取不重复的数
描述
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
string str = to_string(n);
unordered_set<char> set;
reverse(str.begin(), str.end());
string res;
for (char c : str) {
if (set.find(c) == set.end()) {
res += c;
set.insert(c);
}
}
cout << stoi(res) << endl;
return 0;
}
######
unordered_set
适用于存储不重复的元素,而 unordered_map
适用于存储键值对。