质因数分解
for (int i = 2; i <= n; i++) {
while (n % i == 0) {
cout << i <<" ";
n = n / i;
}
if (n == 1) {
break;
}
}
求1-n中和为m的子集
void print(vector<int>& nums) {
for (int i = 1; i<nums.size(); i++) {
if (nums[i] == 1) cout << i << " ";
}
cout << endl;
}
void findSum(int sum, int n, vector<int>& nums) {
if (sum < 1 || n < 1) { return; }
if (sum == n) {
nums[n] = 1;
print(nums);
nums[n] = 0;
}
nums[n] = 1;
findSum(sum - n, n - 1, nums);
nums[n] = 0;
findSum(sum, n - 1, nums);
}
int main() {
int n, m;
cin >> n >> m;
vector<int> nums(n + 1);
findSum(m, n, nums);
return 0;
}
保留最大的数
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int k;
cin >> s >> k;
int index = 0;
if(k >= s.size()){
cout << 0;
}
while(k--){
if(index < 0){
index = 0;
}
while(index < s.size()-1 && s[index] >= s[index+1]){
index++;
}
s.erase(index, 1);
index--;
}
cout << s;
return 0;
}