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

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

题目描述

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

#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,107110502641

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

来源/分类