A.质数统计
统计小于n的素数个数
#include <bits/stdc++.h>
using namespace std;
bool judge(int x){
if(x <= 1) return false;
int bound = (int)sqrt(x) + 1;
for(int i = 2;i < bound;i ++) if(x % i == 0) return false;
return true;
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,count = 0;
scanf("%d",&n);
for(int i = 2;i < n;i ++) if(judge(i)) count++;
printf("%d\n",count);
}
return 0;
}
B.三个5阶矩阵乘法
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
int a[5][5],b[5][5],c[5][5],tmp1[5][5] = {0},tmp2[5][5] = {0};
for(int i = 0;i < 5;i ++)
for(int j = 0;j < 5;j ++)
scanf("%d",&a[i][j]);
for(int i = 0;i < 5;i ++)
for(int j = 0;j < 5;j ++)
scanf("%d",&b[i][j]);
for(int i = 0;i < 5;i ++)
for(int j = 0;j < 5;j ++)
scanf("%d",&c[i][j]);
for(int i = 0;i < 5;i ++){
for(int j = 0;j < 5;j ++)
for(int k = 0;k < 5;k ++)
tmp1[i][j] += a[i][k] * b[k][j];
for(int i = 0;i < 5;i ++)
for(int j = 0;j < 5;j ++)
for(int k = 0;k < 5;k ++)
tmp2[i][j] += tmp1[i][k] * c[k][j];
for(int i = 0;i < 5;i ++)
for(int j = 0;j < 5;j ++){
printf("%d",tmp2[i][j]);
if(j < 4) printf(" ");
if(j == 4) printf("\n");
}
}
return 0;
}
C.哈希映射
A-Z映射0-25
输入N个字符串,最后输入一个整数X
输出所有总和等于X的字符串
#include <bits/stdc++.h>
using namespace std;
vector<string> ans;
using namespace std;
int main()
{
/*************************/
map<char, int> mp;
mp['A'] = 0;
mp['B'] = 1;
mp['C'] = 2;
mp['D'] = 3;
mp['E'] = 4;
mp['F'] = 5;
mp['G'] = 6;
mp['H'] = 7;
mp['I'] = 8;
mp['J'] = 9;
mp['K'] = 10;
mp['L'] = 11;
mp['M'] = 12;
mp['N'] = 13;
mp['O'] = 14;
mp['P'] = 15;
mp['Q'] = 16;
mp['R'] = 17;
mp['S'] = 18;
mp['T'] = 19;
mp['U'] = 20;
mp['V'] = 21;
mp['W'] = 22;
mp['X'] = 23;
mp['Y'] = 24;
mp['Z'] = 25;
/***********************/
int n;
scanf("%d",&n);
int sum[n] = {0};
for(int i = 0;i < n;i ++){
string str;
cin >> str;
for(int j = 0;j < str.size();j ++) sum[i] += mp[str[j]];
ans.push_back(str);
}
int x;
scanf("%d",&x);
for(int i = 0;i < n;i ++) if(sum[i] == x) cout << ans[i] << endl;
return 0;
}