MT1321-MT1330 码题集 (c 语言详解)

发布于:2024-10-15 ⋅ 阅读:(83) ⋅ 点赞:(0)

MT1321·乘积数组

c 语言代码实现

#include <stdio.h>
int main() {
    int n, A[100];
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &A[i]);
    }

    for (int i = 0; i < n; i++) {
        int result = 1;
        for (int j = 0; j < n; j++)
            if (j != i)
                result *= A[j];
        printf("%d ", result);
    }

    return 0;
}

MT1322·N个骰子

c语言代码实现

#include <stdio.h>
int method(int n, int m, int sum) {
    if (sum <= 0 || sum > n * m || n <= 0 || m <= 0)
        return 0;
    if (n == 1) {
        return 1;
    }
    int tmp = 0;
    for (int i = 1; i <= m; i++) {
        int res = method(n - 1, m, sum - i);
        tmp += res;
    }
    return tmp;
}
int main() {
    int n, m, sum;
    scanf("%d %d %d", &n, &m, &sum);
    printf("%d", method(n, m, sum));

    return 0;
}

 MT1323·最短路径

c语言代码实现

#include <math.h>
#include <stdio.h>
int min(int a, int b) {
    if (a > b)
        return b;
    return a;
}

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    int a1[100], b1[100], a2 = 0, b2 = 0;
    a1[0] = a;
    b1[0] = b;
    while (a != 1) {
        a1[++a2] = a / 2;
        a = a / 2;
    }
    while (b != 1) {
        b1[++b2] = b / 2;
        b = b / 2;
    }
    b1[b2] = 1, a1[a2] = 1;
    for (int i = 0; i <= min(b2, a2); i++) {
        if (b1[b2 - i] != a1[a2 - i]) {
            printf("%d", (b2 + a2 - i * 2 + 2));
            return 0;
        }
    }
    printf("%d", abs(b2 - a2));
    return 0;
}

 MT1324·两数之和

c语言代码实现

#include <stdio.h>
int main() {
    int n, x;
    int num[100];
    scanf("%d %d", &n, &x);
    for (int i = 0; i < n; i++) {
        scanf("%d", &num[i]);
    }

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (num[i] + num[j] == x) {
                printf("1");
                return 0;
            }
        }
    }
    printf("0");
    return 0;
}

MT1325·四数之和

 

c 语言代码实现

#include <stdio.h>
int main() {
    int n, x;
    int num[200];
    scanf("%d %d", &n, &x);
    for (int i = 0; i < n; i++) {
        scanf("%d", &num[i]);
    }

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
                for (int w = k + 1; w < n; w++) {
                    if (num[i] + num[j] + num[k] + num[w] == x) {
                        printf("1");
                        return 0;
                    }
                }
            }
        }
    }
    printf("0");
    return 0;
}

 MT1326·波兰国旗问题

 

c 语言代码实现

#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);  // 输入字符串长度
    char s[n + 1];    // 创建一个长度为 n 的字符数组
    scanf("%s", s);   // 输入字符串

    int count_0 = 0, count_1 = 0;  // 初始化 0 和 1 的计数器

    // 遍历字符串,统计 0 和 1 的个数
    for (int i = 0; i < n; i++) {
        if (s[i] == '0') {
            count_0++;
        } else {
            count_1++;
        }
    }

    // 根据计数器构造排序后的字符串
    for (int i = 0; i < count_0; i++) {
        printf("0");
    }
    for (int i = 0; i < count_1; i++) {
        printf("1");
    }
    
    printf("\n");
    return 0;
}

MT1327·荷兰国旗问题

 

#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d", &n); // 输入字符串长度
    char s[n + 1];   // 创建一个长度为 n 的字符数组
    scanf("%s", s);  // 输入字符串

    int count_0 = 0, count_1 = 0, count_2 = 0; // 初始化 0 和 1 和 2 的计数器

    // 遍历字符串,统计 0 和 1 的个数
    for (int i = 0; i < n; i++) {
        if (s[i] == '0') {
            count_0++;
        } else if (s[i] == '1') {
            count_1++;
        } else {
            count_2++;
        }
    }

    // 根据计数器构造排序后的字符串
    for (int i = 0; i < count_0; i++) {
        printf("0");
    }
    for (int i = 0; i < count_1; i++) {
        printf("1");
    }
    for (int i = 0; i < count_2; i++) {
        printf("2");
    }

    printf("\n");
    return 0;
}

 MT1328·用函数求和

 

c 语言实现代码 

#include <stdio.h>
int add(int x, int y) { return x + y; }
int main() {
    int a, b;
    scanf("%d,%d", &a, &b);
    printf("%d", add(a, b));
    return 0;
}

MT1329·用函数计算公式

 

c 语言实现代码

#include <stdio.h>
int fun(int n) {
    int res = 0;
    for (int i = 1; i < n + 1; i += 3) {
        res += i;
    }
    return res;
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%d", fun(n));
    return 0;
}

 MT1330·区间数字的总和

c 语言代码实现

#include <stdio.h>

int main() {
    int a, b, c, d, e, f;
    
    // 输入6个整数
    scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
    
    // 计算每个区间的和
    int sum_ab = (a + b) * (b - a + 1) / 2;
    int sum_cd = (c + d) * (d - c + 1) / 2;
    int sum_ef = (e + f) * (f - e + 1) / 2;
    
    // 输出三个区间的总和
    int total_sum = sum_ab + sum_cd + sum_ef;
    printf("%d\n", total_sum);
    
    return 0;
}

 


网站公告

今日签到

点亮在社区的每一天
去签到