看到讨论区说威佐夫博奕 没听说过。。 自己想的方法。
set容器做的,首先把1-300000的数据全部存到容器里面然后从1筛选
具体请看代码:
#include <stdio.h> #include <set> using namespace std; #define N 100005 int a[N]; int main() { set<int>s; for(int i=1;i<300000;i++) s.insert(i);//s.insert()向容器添加元素 for(int i=1,j=0;i<=100000;i++,j++) { a[j]=*s.begin();//s.begin()访问第一个元素的地址 s.erase(a[j]);//s.erase()清除指定的元素 s.erase(a[j]+i); } int n,x; scanf("%d",&n); while(n--) { scanf("%d",&x); printf("%d %d\n",a[x-1],a[x-1]+x); } return 0; }
原文地址:http://blog.csdn.net/su20145104009/article/details/46502747