3858: 随机重复(挖土机 CSP-J 模拟赛 ~ 第二场)

内存限制:512 MB 时间限制:10.000 S
评测方式:文本比较 命题人:
提交:5 解决:2

题目描述

33DAI 写了一个很菜的随机数生成器,输入了随机数种子 ���� 和个数 � 后,可以得到 � 个 0∼264−1 之间的正整数。

#include <bits/stdc++.h> 

using namespace std; 

unsigned long long seed; 

unsigned long long rnd() { 

      seed = seed * seed + seed + 30ull; 

      return seed; 

}

int main() { 

      cin >> seed; 

      int n; 

      cin >> n; 

     for (int i = 1; i <= n; i++)

         cout << rnd() << " "; 

    return 0; 

}

比如输入 33 10 可以得到下面的输出:

1152 1328286 1764345026112 6861985357762111070 1901262918123106560 7641831279628562718 7446905973427220672 5420652848451272926 7399983410558501248 17740564155584332190 

Kitten 决定测试一下这个随机数生成器到底有多菜,于是指定了随机数种子 ���� 和随机数个数 �,让 33DAI 生成出来 � 个随机数。

紧接着给了他 � 个整数 �1∼��,让数数看看这 � 个整数中有多少个在那 � 个随机数中出现了。

输入

第一行为三个整数 ����,�,�。

第二行为空格隔开的 � 个整数 �1∼��。

输出

一行为一个整数,即题目说的数量。

样例输入 复制

33 10 5
33 1764345026112 1153 1152 17740564155584332190

样例输出 复制

3

提示

数据规模与约定

对于 100% 的数据,1≤����,�≤107,1≤�≤105,0≤��≤264−1。

  • 子任务 1(10 分):保证 Kitten 的 � 个随机数是使用 33DAI 的程序,输入 ���� 和 � 生成出来的。
  • 子任务 2(20 分):保证 �=1。
  • 子任务 3(30 分):保证 �≤�。
  • 子任务 4(40 分):没有特殊限制。

来源/分类