// SorozatGen.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
#define int long long
int GenNextElement(int Base, int A, int B, int M) {
Base = Base * A + B;
Base %= (int)pow(10, M*3);
Base /= (int)pow(10, M);
return Base;
}
signed main()
{
int M, BeginningNum, A, B, Lenght, K;
cin >> M >> BeginningNum >> A >> B >> Lenght >> K;
K = Lenght - K;
vector<int> LastElementMet((int)pow(10, M*2));
int Looplenght = 0;
int NumbersBeforeLoopLenght = 0;
int OG = BeginningNum;
int OGL = Lenght;
for (size_t i = 1; i < (int)pow(10, M*2); i++)
{
BeginningNum = GenNextElement(BeginningNum, A, B, M);
if (LastElementMet[BeginningNum] == 0) {
LastElementMet[BeginningNum] = i;
}
else {
NumbersBeforeLoopLenght = LastElementMet[BeginningNum];
Looplenght = i - LastElementMet[BeginningNum];
break;
}
/*cout << BeginningNum << "\n";*/
}
cout << Looplenght << "\n";
vector<int> Loop;
for (size_t i = 0; i < Looplenght; i++)
{
Loop.push_back(BeginningNum);
BeginningNum = GenNextElement(BeginningNum, A, B, M);
}
vector<int> CountTillLenght((int)pow(10, M*2));
BeginningNum = OG;
for (size_t i = 0; i < NumbersBeforeLoopLenght-1; i++)
{
BeginningNum = GenNextElement(BeginningNum, A, B, M);
CountTillLenght[BeginningNum]++;
}
Lenght -= NumbersBeforeLoopLenght;
int Repeated = Lenght % Looplenght;
for (size_t i = 0; i <= Repeated; i++)
{
CountTillLenght[Loop[i]]++;
}
Lenght -= Repeated;
int smallloop = Lenght / Looplenght;
for (size_t i = 0; i < Looplenght; i++)
{
CountTillLenght[Loop[i]] += smallloop;
}
int CCount = 0;
for (size_t i = 0; i < CountTillLenght.size(); i++)
{
CCount += CountTillLenght[i];
if (CCount >= K+1) {
cout << i << "\n";
return 0;
}
}
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file