C++程序找出给定序列中的不同元素
假设我们给定了三个整数n、x、y和z。我们必须从给定的整数中创建一个序列,其中序列的第一项是(xmodulo231)。除了第一个元素,序列中的其他元素ai=(a(i-1)*y+z)modulo231,其中1≤i≤n-1。我们必须找出不同整数的数量我们制作的序列。
所以,如果输入像n=5,x=1,y=2,z=1,那么输出将是5。
唯一值是{1,3,7,15,31}。所以,答案是5。
示例
让我们看看以下实现以获得更好的理解-
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
const long long MOD = 2147483648;
int solve(int n, long long x, long long y, long long z) {
vector<bool> temp;
temp.resize(MOD);
long long p = x % MOD;
temp[p] = true;
int ans = 1;
for (int i = 1; i < n; ++i) {
p = ((p * y) + z) % MOD;
if (temp[p])
break;
++ans;
temp[p] = true;
}
return ans;
}
int main() {
cout<< solve(5, 1, 2, 1) <<endl;
return 0;
}输入
5, 1, 2, 1输出结果
5
热门推荐
10 爱情贺卡祝福语简短英语
11 感谢父母的简短祝福语
12 虎年公司祝福语简短的
13 20岁简短生日祝福语
14 女朋友考试祝福语简短
15 写给情侣祝福语 浪漫简短
16 新年祝福语简短聪明可爱
17 对生活祝福语简短精辟
18 朋友孩子考试祝福语简短