138982025-01-09 09:26:40feheristvanSorozat generáláscpp17Hibás válasz 5/5052ms5440 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <limits>

using namespace std;

int countDigit(int n) {
    if (n == 0)
        return 1;

    int count = 0;

    while (n != 0) {
        n = n / 10;
        ++count;
    }
    return count;
}

bool comp(int a, int b){
    return a > b;
}

int main()
{
    int m, x, a, b, n, k;
    cin >> m >> x >> a >> b >> n >> k;
    vector <int> v;
    unordered_map<int, int> lastSeen;
    int minDistance = numeric_limits<int>::max();
    int resultDigit = -1, digit;
    for(int i = 0 ; i < n; i++){
        x = x * a + b;
       // cout << x << " ";
        if(countDigit(x) == 2 or countDigit(x) == 3){
            x = x / 10;
        }
        else if(countDigit(x) == 4){
                x = x / 10;
                x = x % 100;
        }
        v.push_back(x);
        digit = v[i];
         if (lastSeen.find(digit) != lastSeen.end()) {
            int distance = i - lastSeen[digit];
            if (distance < minDistance) {
                minDistance = distance;
                resultDigit = digit;
            }
        }
        lastSeen[digit] = i;
    }
    cout << resultDigit << endl;
    sort(v.begin(), v.end(), comp);
    cout << v[k - 1];
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base5/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/016ms944 KiB
3Részben helyes1/21ms508 KiB
4Részben helyes1/22ms316 KiB
5Részben helyes1/22ms404 KiB
6Részben helyes1/21ms352 KiB
7Részben helyes1/22ms316 KiB
8Hibás válasz0/44ms564 KiB
9Hibás válasz0/48ms1284 KiB
10Hibás válasz0/423ms2828 KiB
11Hibás válasz0/421ms2764 KiB
12Hibás válasz0/410ms1036 KiB
13Hibás válasz0/441ms5308 KiB
14Hibás válasz0/446ms5308 KiB
15Hibás válasz0/452ms5304 KiB
16Hibás válasz0/452ms5440 KiB
17Hibás válasz0/414ms832 KiB