C语言入门实战(10):取模问题
题目
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶?请编程解决该问题。
要求
本程序无需输入,结果只输出一个整数即可。
参考代码
#include <stdio.h> #include <stdlib.h> /** * 根据题意,即是求最小的正整数n,满足 * n%2 = 1 * n%3 = 2 * n%5 = 4 * n%6 = 5 * n%7 = 0 */ int main(int argc, char *argv[]) { int i,j; //定义一个整型数组 int a[4] = { 2,3,5,6}; for(i=1;;i++) { //从7的倍数开始找 int n = i*7; int find = 1; for(j=0;j<4;j++) { if(n%a[j] != a[j]-1) { find = 0; break; } } if(find == 1) { printf("%d", n);//119 break; } } return 0; }
代码复盘
%是取模运算符,a%b即是求a/b的余数。 从7的倍数开始找(1倍,2倍,…),找到符合条件的第一个数打印答案,break跳出。 头文件stdio.h中声明的scanf()和printf()是标准库中用于处理标准输入和输出的库函数。