Pagini recente » Cod sursa (job #713977) | branza | Cod sursa (job #1739399) | Cod sursa (job #1526765) | Cod sursa (job #1217304)
#include <fstream>
#include <vector>
#define prim 100000007
#define ull unsigned long long int
using namespace std;
struct lista{
ull nr;
lista *next;
};
ull N,M, A,B,C,D,E; lista *table[prim];
void add(int nr){
int ind=nr%prim;
lista *aux = new lista;
aux->nr=nr;
aux->next=table[ind];
table[ind]=aux;
}
bool found(int nr){
int ind=nr%prim;
lista *p, *last=NULL;
for (p=table[ind]; p!=NULL; p=p->next){
if (p->nr==nr){
if (p==table[ind]){
table[ind]=p->next;
delete(p);
}
else{
last->next=p->next;
delete(p);
}
return 1;
}
last=p;
}
return 0;
}
int main(){
ifstream in("muzica.in");
ofstream out("muzica.out");
in >> N >> M;
in >> A >> B >> C >> D >> E;
ull i,aux,cnt=0,R1=A,R2=B;
for (i=1; i<=N; i++){
in >> aux;
add(aux);
}
if (found(A)) cnt++;
if (found(B)) cnt++;
for (i=1; i<=M-2; i++){
aux=R2;
R2=(C*R2+D*R1)%E;
R1=aux;
if (found(R2)) cnt ++;
}
out << cnt;
return 0;
}