爱因斯坦台阶问题

【实例描述】

  爱因斯坦问题是假设某人走一个台阶,如果每步走两级,最后只剩一级,如果每步走三级,最后剩两级,如果每步走四级,最后剩三级,如果每步走五级,最后剩四级,如果每步走六级,最后剩五级,如果每步走七级,则一个也不剩。本实例求出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--;
	}
}

 

posted @ 2018-12-17 19:28  醉画仙  阅读(1589)  评论(0编辑  收藏  举报