- 主页/
- 赛马周考6.9
赛马周考6.9
发布于 2017-06-09 20:00
2440 次浏览
1 赞
来自 随便聊聊
第一题:没什么好说的,直接模拟就可以,数据结构选用的是set,其他的也ok。
第二题:做过同类选择题(智力题),记住了思路,直接得到结果就可以了,当然,注意初始状态是关闭,这个很重要。
代码1:
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <set> int main() { using namespace std; int n; while (cin >> n) { set<int> arr; for (int i = 0; i < n; i++) { arr.insert(i + 1); } set<int>::iterator iter = arr.begin(); iter++; set<int>::iterator itor = iter; while (arr.size() > 2) { itor++; if (itor == arr.end()) { itor = arr.begin(); itor++; } else if (++itor == arr.end()) { itor = arr.begin(); } if(arr.size() > 3) cout << *iter << " "; else cout << *iter << endl; arr.erase(*iter); iter = itor; } if (iter == arr.begin()) { cout << *arr.begin() << " " << *arr.rbegin() << endl; } else { cout << *arr.rbegin() << " " << *arr.begin() << endl; } } return 0; }
代码2:
#include <iostream> #include <vector> #include <string> #include <algorithm> int main() { using namespace std; long long n, l, r; while (cin >> n >> l >> r) { int temp = sqrt((double)l); long long i = temp * temp; long long ans = -1; if (i == l) { ans++; } while (i <= r) { ans++; temp++; i = temp * temp; } cout << r - l + 1 - ans << endl; } return 0; }
2 条回复
添加回复