小C最近玩上了新游戏,他想在网上交一些朋友,但他不知道应该交什么样的朋友。
首先,小C需要一个随机数生成器来帮助他进行选择,小C找到了一个可生成n个可行朋友id的随机数生成器,代码如下
include<iostream>
using namespace std;
int n,seed,arr[1000001];
void Rand(int seed)
{
seed|=0x123456 ;
for(int i=1;i<=n;i++){
arr[i ]=seed;
seed^=(arr[i]+i);
seed%=10000000;
seed+=1;
}
}
int main()
{
cin>>n>>seed;Rand( seed);
//todo
return 0;
}
得到n个随机数后将他们进行排序。小C会进行m次挑选,每次挑选下标为x的数,选择第x大的数的人交朋友。
输入格式:
第一行包括两个数字n seed
第二行输入一个数字m表示将会进行n组询问
接下来m行 每i行包含一个数字xi,表示将要选择第xi大的数
输出格式:
输出包括m行 每行输出询问的结果
输入样例
10 233
5
2
4
6
8
10
输出样例:
6
10
25
60
1193215
数据范围与提示
n<=1e7,m<=1e5
#include <iostream>
using namespace std;
int n, seed, arr[1000001];
void Rand(int seed)
{
seed |= 0x123456;
for (int i = 1; i <= n; i++)
{
arr[i] = seed;
seed ^= (arr[i] + i);
seed %= 10000000;
seed += 1;
}
}
int main()
{
cin >> n >> seed;
Rand(seed);
//降序排序
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
int m,t = 0;
cin >> m;
int a[m];
for(int i = 0;i < m;i++){
cin >> a[i];
}
for(int i = 0;i < m;i++){
cout << arr[a[i]] << endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int n, seed, arr[1000001];
void Rand(int seed)
{
seed |= 0x123456;
for (int i = 1; i <= n; i++)
{
arr[i] = seed;
seed ^= (arr[i] + i);
seed %= 10000000;
seed += 1;
}
}
int main()
{
cin >> n >> seed;
Rand(seed);
sort(arr+1, arr+n+1);
int m;
cin >> m;
for (int i = 0; i < m; i++)
{
int xi;
cin >> xi;
cout << arr[xi] << '\n';
}
return 0;
}