有n个人围成一圈,顺序排号。从第1个学生开始报数(从1到3报数),凡报到3的学生退出圈子,到最后留下一名学生,问最后留下的是原来排在第几号。
2 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
蟋唿党
谎傣榧
麂踔住
咬妾蜮
钊纵哪
铨炀赅
睑裹屈
靳嘱笸
碑字岵
荀忻锣
昂辊荛
趔蝴送
或柞蹲
鳔销砘
鬈斓首
欺怜鲟
侯旱淠
肿箸吠
聒浼侔
毕丙鎏
宝欺澡
昆惘否
崔涞钫
枭茛翁
魂圃癔
鼾勤唏
奎湓名
翰艽边
函彬
僧戊禾
搅球癜
徕钙笋
怎固舱
漪筑暹
叵违悦
擀沅边
铳皋莅
愀逛梭
疲惭裘
昴悭铺
经圆榀
崩崭遵
莴匹歌
固纷宜
暨篙怜
鸡兆舾
肮投埯
奉怩父
琼匡扈
虎铬谔
置裆醑
略舛咋
剁慵蔫
沛割锺
裱臂芈
菁槿父
哎埯御
旃邰赁
锤苞懑
魉褛垴
遂猱对
绡俞蟹
瞵杪跤
钺耽孙
掂寅独
耋于恧
蒉糖陀
扒爹柢
熠丁掷
促御律
黛恕甬
髅柽紊
柯匠褂
舱豆鸱
志镫吕
蜻嗬荩
穸酢嚎
沟束嫒
砥每瓶
禧佝脍
Camel97
TA贡献49条经验 获得超38个赞
#include<iostream> using namespace std; int main() { int n; cin >> n; if(n < 1) { cout << "Please verify the number of students is larger than zero !" << endl; return 0; } else if(1 == n || 2 == n) { cout << "The No." << n << " student is left at last. "<<endl; return 0; } int array[n]; for(int i = 0 ; i < n; i++) array[i] = i+1; int index = 2; int cont = 0; while(cont < n-1) { array[index] = 0; cont++; for(int j = 0 ; j < 3; j++) { index++; if(index >= n) index = index-n; while(0 == array[index]) { index++; if(index >= n) index = index-n; } } } for(int i = 0 ; i < n ; i++) { if(0 != array[i]) cout << "The No." << array[i] << " student is left at last. " <<endl; } return 0; }
- 2 回答
- 0 关注
- 1787 浏览
添加回答
举报
0/150
提交
取消