/* * 题目:有一天晚上邮差Peter感到非常无聊,为了打破夜班的单调,他使用邮局 * 中的一行邮箱进行了以下实验。这些邮箱被从1到150编号,然后从邮箱2开始, * 他打开了所有编号为偶数的的邮箱门,而保持其他邮箱的门关着。接着,从邮箱 * 3开始,每隔3个邮箱邮箱,如果这个邮箱的门是关着的他就打开这个邮箱的门, * 而如果门是开着的他就关上门。然后他每隔4个邮箱重复这个过程,再每隔5个邮 * 箱重复这个过程,如此下去。当结束的时候,他被关着的邮箱的分布所惊讶了。 */ /* 1)数据结构:邮箱(1-150)+邮箱状态(0 or 1)—— 2)算法: 一个条件循环——开关邮箱 */ #include<iostream> #include<conio.h> using namespace std; #define Max_Mail_Num 150 int main() { int Box_Num=1; int Mail_State[Max_Mail_Num]={0};//邮箱的初始状态为0——关闭。 while(Box_Num<Max_Mail_Num)//主操作。开关邮箱。 { for(int i=Box_Num;i<Max_Mail_Num;i+=(Box_Num+1)) { if(Mail_State[i]==0) Mail_State[i]=1; else Mail_State[i]=0; } Box_Num++; } //输出所有关闭着的邮箱的编号。。 for(int i=0;i<Max_Mail_Num;i++) { if(Mail_State[i]==0) cout<<i+1<<"/t"; } _getch(); return 0; }