目录
#include <iostream>
using namespace std;
#include<algorithm>
int gcd(int a,int b) {
if(b == 0) {
return a;
}
return gcd(b,a%b);
}
int test_01() {
int n,m;
cin >> n >> m;
int GCD = gcd(n,m);
cout << GCD << endl;
cout << n / GCD * m << endl;
return 0;
}
质数筛选
#include<cstring>
bool is_prime[100];
int test_02() {
for(int i = 2; i < 100; i++) {
is_prime[i] = true;
}
for(int i = 2; i * i < 100; i++) {
if(is_prime[i]) {
for(int j = i*i; j < 100; j += i) {
is_prime[j] = false;
}
}
}
for(int i = 2; i < 100; i++) {
if(is_prime[i]) {
cout << i <<endl;
}
}
return 0;
}
欧拉函数 – 求互质数个数
int test_03() {
int n;
cin >> n;
int res = n;
for(int i = 2; i * i <= n; i++) {
if(n % i ==0) {
res = res / i * (i - 1);
while(n % i == 0) {
n /= i;
}
}
}
if(n > 1) {
res = res / n * (n - 1);
}
cout << res << endl;
return 0;
}
区间预处理的欧拉函数 ( n个数 )
int phi[10001];
int test_04() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
phi[i] = i;
}
for(int i = 2; i <= n; i++) {
if(phi[i] == i) {
for(int j = i; j <= n; j += i) {
phi[j] = phi[j] / i * (i - 1);
}
}
}
for(int i = 1; i <= n; i++) {
cout << "phi(" << i << ") = " << phi[i] << endl;
}
return 0;
}
矩阵加减 (线性代数 – 公式)
struct matrix {
int a[100][100];
int n,m;
};
matrix matrix_mul(matrix A,matrix B) {
matrix ret;
ret.n = A.n;
ret.m = B.m;
for(int i = 0; i < ret.n; i++) {
for(int j = 0; j < ret.m; j++) {
ret.a[i][j] = 0;
}
}
for(int i = 0; i < ret.n; i++) {
for(int j = 0; j < ret.m; j++) {
for(int k = 0; k < A.m; k++) {
ret.a[i][j] += A.a[i][k] * B.a[k][j];
}
}
}
return ret;
}
int test_05() {
matrix A,B;
cin >> A.n >> A.m;
for(int i = 0; i < A.n; i++) {
for(int j = 0; j < A.m; j++) {
cin >> A.a[i][j];
}
}
cin >> B.n >> B.m;
for(int i = 0; i < B.n; i++) {
for(int j = 0; j < B.m; j++) {
cin >> B.a[i][j];
}
}
if(A.m != B.n) {
cout << "No" << endl;
} else {
matrix C = matrix_mul(A,B);
for(int i = 0; i < C.n; i++) {
for(int j = 0; j < C.m; j++) {
if(j != C.m - 1) {
cout << C.a[i][j] << " ";
} else {
cout << C.a[i][j] << endl;
}
}
}
}
return 0;
}
int main() {
test_05();
return 0;
}