不定方程求整数解问题

爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则剩最后1阶;若每步跨3阶,则剩最后2阶;若每步跨5阶,则剩最后4阶;若每步跨6阶,则剩最后5阶;只有每步跨7阶,才一阶不剩。请问,这条阶梯一共有多少阶?

思路:首先,这里肯定需要一个循环进行穷举,如果满足题目所有条件则跳出。因为不确定具体循环次数,所以选择使用while。

知识点:循环与各个循环的特点。

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int number = 7;

    while (1) {

        if (number % 2 == 1 && number % 3 == 2 && number % 5 == 4 && number % 6 == 5 && number % 7 == 0) {

            printf("阶梯有%d阶", number);
            break;
        }
        number ++;
    }

    return 0;
}

百钱百鸡问题

中国古代数学家张邱建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?

#include <stdio.h>

int main(int argc, const char * argv[]) {

    for (int male = 0; male <= 20; male ++) {

        for (int female = 0; female <= 33; female ++) {

            int child = 100 - male - female;

            if (child % 3 != 0) {

                continue;
            }
            if (child / 3 + male * 5 + female * 3 == 100) {

                printf("公鸡 = %-6d母鸡 = %-6d小鸡 = %-6d\n", male, female, child);
            }
        }
    }

    return 0;
}