目录
MT1371·所有路径
题目描述:输入整型M和N(均大于2小于100),用递归函数计算MxN矩阵从左上角到右下角的所有可能路径(每一步路径只能往下、往右走)。
格式
输入格式:输入整型M和N,空格分隔。
输出格式:输出整型
样例 1
输入:3 3
输出:6
C 语言实现代码
#include <stdio.h>
long a[100][100];
long allPath(int m, int n) {
if (m == 1 || n == 1)
return 1;
if (a[m][n] != 0)
return a[m][n];
else
return a[m][n] = allPath(m - 1, n) + allPath(m, n - 1);
}
int main() {
int M, N;
if (M < 2 && M > 100 || N < 2 && N > 100)
return 0;
scanf("%d %d", &M, &N);
printf("%ld",allPath(M, N));
return 0;
}
MT1372·矩阵清零
题目描述:设计一个函数,将NXN的矩阵所有元素替换成0。
格式
输入格式:第一行输入N(<100),第二行输入数组元素,整型,空格分隔。
输出格式:输出整型矩阵,空格分隔。
样例 1
输入:3
1 2 3 4 5 6 7 8 9
输出:0 0 0
0 0 0
0 0 0
c 语言实现代码
#include <stdio.h>
#define MAX_SIZE 100
void replaceWithZeros(int matrix[MAX_SIZE][MAX_SIZE], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = 0;
}
}
}
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int n;
int matrix[MAX_SIZE][MAX_SIZE];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
replaceWithZeros(matrix, n);
printMatrix(matrix, n);
return 0;
}
MT1373·亲和数
c 语言实现代码
#include <stdio.h>
// 真约数之和
int sumOfProperDivisors(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
// 进行判断
void amicable_number(int num_1, int num_2) {
if (sumOfProperDivisors(num_1) == num_2 &&
sumOfProperDivisors(num_2) == num_1) {
printf("YES");
} else {
printf("NO");
}
}
int main() {
int num_1, num_2;
scanf("%d %d", &num_1, &num_2);
amicable_number(num_1, num_2);
return 0;
}
MT1374·Pronic数
c 语言代码实现
#include <stdio.h>
int PronicNumber(int x) {
for (int i = 0; i * (i + 1) <= x; i++) {
if (i * (i + 1) == x) {
return 1; // is PronicNumber
}
}
return 0;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
for (int i = m; i <= n; i++) {
if (PronicNumber(i) == 1) {
printf("%d ", i);
}
}
return 0;
}
MT1375·4和7的序列
c 语言代码实现
#include <math.h>
#include <stdio.h>
long long getLuckyNumber(int N) {
int length = 0;
int count = 0;
while (count < N) {
length++;
count += pow(2, length); // 每位数组合为 2^length
}
count -= pow(2, length);
int position = N - count - 1;
// 生成对应的数字
long long luckyNumber = 0;
for (int i = 0; i < length; i++) {
if (position & (1 << (length - 1 - i))) {
luckyNumber = luckyNumber * 10 + 7;
} else {
luckyNumber = luckyNumber * 10 + 4;
}
}
return luckyNumber;
}
int main() {
int N;
scanf("%d", &N);
long long result = getLuckyNumber(N);
printf("%lld", result);
return 0;
}
MT1376·小码哥的数学
c 语言代码实现
#include <stdio.h>
int smartMath(int a, int b) {
int sum = a + b;
return sum % 100; // 只保留最后两位数
}
int main() {
int n;
scanf("%d", &n);
int a, b;
while (n > 0) {
scanf("%d %d", &a, &b);
printf("%d\n", smartMath(a, b));
n--;
}
return 0;
}
MT1377·模乘逆元
c 语言代码实现
#include <stdio.h>
// 扩展欧几里得算法
int extendedGCD(int a, int b, int *x, int *y) {
if (b == 0) {
*x = 1;
*y = 0;
return a;
}
int x1, y1;
int gcd = extendedGCD(b, a % b, &x1, &y1);
*x = y1;
*y = x1 - (a / b) * y1;
return gcd;
}
// 计算模乘逆元
int modInverse(int a, int m) {
int x, y;
int gcd = extendedGCD(a, m, &x, &y);
if (gcd != 1) {
return -1;
} else {
return (x % m + m) % m;
}
}
int main() {
int a, m;
scanf("%d %d", &a, &m);
int inverse = modInverse(a, m);
printf("%d", inverse);
return 0;
}
MT1378·一堆花甲
c 语言代码实现
#include <stdio.h>
int findMinimumClams() {
int clams = 1; // 从 1 开始尝试
while (1) {
int temp = clams; // 临时变量用于计算
// 逆向推理每只海豚的操作
int valid = 1; // 标记是否有效
for (int i = 0; i < 5; i++) {
if ((temp - 1) % 5 != 0) {
valid = 0; // 如果不满足条件 标记为无效
break;
}
temp = (temp - 1) * 4 / 5;
}
if (valid) {
return clams;
}
clams++;
}
}
int main() {
int minimumClams = findMinimumClams();
printf("%d", minimumClams);
return 0;
}
MT1379·operate函数
c 语言代码实现
#include <stdio.h>
// operate 函数实现加法和减法
int operate(int a, int b, char op) {
switch (op) {
case '+':
return a + b; // 加法
case '-':
return a - b; // 减法
default:
return 0; // 返回0或其他值表示错误
}
}
int main() {
int a, b;
char op;
// 输入格式为 a op b,例如 3+5
scanf("%d%c%d", &a, &op, &b); // 读取整数、操作符和整数
// 调用 operate 函数并输出结果
int result = operate(a, b, op);
printf("%d\n", result);
return 0;
}
MT1380·mymath函数
#include <stdio.h>
// mymath 函数实现乘法、除法和求余
double mymath(int a, int b, char op) {
switch (op) {
case '*':
return a * b; // 乘法,返回整型
case '/':
if (b != 0)
return (double)a / (double)b; // 除法,返回浮点型
else
return 0; // 除以零的情况
case '%':
return a % b; // 求余,返回整型
default:
return 0; // 不支持的操作
}
}
int main() {
int a, b;
char op;
// 输入格式为 a op b,例如 3/5
scanf("%d%c%d", &a, &op, &b); // 读取整数、操作符和整数
// 调用 mymath 函数
double result = mymath(a, b, op);
// 根据操作符输出结果
if (op == '/') {
if (b == 0) {
printf("Error: Division by zero.\n");
} else {
printf("%.6lf\n", result); // 除法输出实型
}
} else {
printf("%.0lf\n", result); // 乘法和求余输出整型
}
return 0;
}
标签:return,int,++,MT1371,printf,码题,include,MT1380,op
From: https://blog.csdn.net/xinfanyyds/article/details/143167188