【实例描述】
爱因斯坦问题是假设某人走一个台阶,如果每步走两级,最后只剩一级,如果每步走三级,最后剩两级,如果每步走四级,最后剩三级,如果每步走五级,最后剩四级,如果每步走六级,最后剩五级,如果每步走七级,则一个也不剩。本实例求出1000以内符合该条件的数字。
【实现过程】
本实例抽象为数学问题是:总的台阶数分别对2、3、4、5、6、7取余的结果是1、2、3、4、5、0。
代码如下:
#include<iostream> using namespace std; bool Is_right(int n) { for(int i=1;i<7;i++) { if(i==6) { if(n%(i+1)!=0) return false; } else { if(n%(i+1)!=i) return false; } } return true; } void main() { cout<<"---------爱因斯坦台阶-----------"<<endl; cout<<"1000以内属于爱因斯坦台阶数字为:"<<endl; int max=1000; while(max) { if(!Is_right(max)) {} else cout<<max<<end; max--; } }