24真题
作者:
Ksiiiii
,
2024-12-14 21:06:42
,
所有人可见
,
阅读 1
亲和数
#include <iostream>
using namespace std;
const int N = 10000;
int main(){
bool a[N] = {false};
//将i作为主体进行遍历
for(int i = 1;i < 300;i ++){
//利用j寻找i的因数
int num = 0;
int sum = 0;
for(int j = 1;j < i;j ++){
if(a[i]) continue;
if(i % j == 0){
//num记录i的所有因数和
num += j;
}
}
//利用k判断num的所有因数和是否等于i
for(int k = 1;k < num;k ++){
//当num与i相同时不为亲和数
if(num == i) break;
//用sum记录num的所有因数和
if(num % k == 0) sum += k;
}
if(sum == i){
a[i] = true;
a[num] = true;
}
}
for(int i = 0;i < 300;i ++){
if(a[i]){
cout << i << ":";
for(int j = 1;j < i;j ++){
if(i % j == 0) cout << j << " ";
}
cout << endl;
}
}
return 0;
}
异位字符串
//这道题其实也比较简单,只需要用数组模拟即可,暴力统计出现次数对比即可。
#include <iostream>
#include <string>
using namespace std;
int main(){
int lowwer[26] = {0};
int upper[26] = {0};
string s,t;
cin >> s >> t;
for(char c : s){
if(c >= 'A' && c <= 'Z'){
upper[c - 'A'] ++;
}
if(c >= 'a' && c <= 'z'){
lowwer[c - 'a'] ++;
}
}
for(char c : t){
if(c >= 'A' && c <= 'Z'){
upper[c - 'A'] --;
}
if(c >= 'a' && c <= 'z'){
lowwer[c - 'a'] --;
}
}
bool flag = true;
for(int i = 0;i < 26;i ++){
if(lowwer[i] || upper[i]){
flag = false;
break;
}
}
if(flag) cout << "是异位字符串" <<endl;
else cout << "bushi" <<endl;
}