思路:用queue处理关闭电力,注意N=13。
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <map>
#include <set>
#include <stack>
#include <queue>
using namespace std;
int main(void) {
int n;
queue<int> s;
while (cin >> n && n != 0) {
if (n == 13) {
cout << "1" << endl;
continue;
}
for (int i = 1; i <= n; i++)
s.push(i);
int m = 1;
while (true) {
if (s.front() != 13) {
s.pop();
for (int i = 0; i < m - 1; i++) {
s.push(s.front());
s.pop();
}
}
else {
if (s.size() == 1) {
cout << m << endl;
break;
}
m = m + 1;
while (!s.empty())
s.pop();
for (int i = 1; i <= n; i++)
s.push(i);
}
}
}
return 0;
}
本文提供了一道名为PowerCrisis的编程题解决方案。该题通过使用队列来模拟特定条件下电力系统的关闭过程,特别关注了当N等于13时的情况。代码采用C++编写,实现了循环移除元素直至找到最终答案。
1131

被折叠的 条评论
为什么被折叠?



