114882024-10-09 16:16:41MCDaveMagic Wandscpp17Hibás válasz 31/100451ms11384 KiB
#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

int gcd(int larger, int smaller)
{
    while (true)
    {
        if (larger < smaller) swap(larger, smaller);
        int m = larger % smaller;
        if (m == 0) return smaller;
        larger = m;
    }
}

int main()
{
    int i, n, temp1, x=0, lnko;
    cin >> n;
    vector<int> vec(n), avec(n);
    vector<bool> bvec(n);

    for (i = 0; i < n; i++)
    {
        cin >> temp1;
        vec[i] = --temp1;
        avec[i] = abs(temp1 - i);
    }

    for (i = 0; i < n; i++)
    {
        if (vec[i] != i)
        {
            swap(vec[i], vec[vec[i]]);
            x++;
        }
    }

    i = 0;
    while (i < n && avec[i] == 0) i++;
    if (i == n) 
    {
        for (i = 0; i < n; i++) cout << 0 << ' ';
        return 0;
    }
    lnko = avec[i];

    for (i++; i < n; i++)
    {
        if (avec[i] == 0) continue;
        lnko = gcd(avec[i], lnko);
    }

    for (i = 1; i <= n; i++)
    {
        if (lnko%i==0)
        {
            cout << x << ' ';
        }
        else
        {
            cout << -1 << ' ';
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms360 KiB
2Elfogadva3ms360 KiB
subtask214/14
3Elfogadva3ms384 KiB
4Elfogadva3ms504 KiB
5Elfogadva3ms360 KiB
6Elfogadva3ms360 KiB
7Elfogadva2ms360 KiB
8Elfogadva3ms256 KiB
9Elfogadva2ms376 KiB
subtask317/17
10Elfogadva3ms512 KiB
11Elfogadva3ms488 KiB
12Elfogadva3ms512 KiB
13Elfogadva3ms384 KiB
14Elfogadva3ms360 KiB
15Elfogadva2ms376 KiB
subtask40/23
16Elfogadva4ms404 KiB
17Elfogadva4ms632 KiB
18Elfogadva4ms416 KiB
19Hibás válasz4ms360 KiB
20Hibás válasz4ms504 KiB
21Elfogadva4ms360 KiB
subtask50/46
22Elfogadva43ms1440 KiB
23Hibás válasz90ms2512 KiB
24Elfogadva224ms5912 KiB
25Elfogadva451ms11384 KiB
26Elfogadva444ms11368 KiB
27Elfogadva442ms11368 KiB
28Elfogadva442ms11384 KiB
29Elfogadva433ms10344 KiB
30Elfogadva446ms11368 KiB