92932024-02-20 10:57:20AGergoA sárkány feladványa (50)cpp17Accepted 50/504ms4624 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    cin.tie(0);
    iostream::sync_with_stdio(0);

    vector<int> oszt1(100001,0);
    vector<int> oszt2(100001,0);

    vector<int> sz1(3);
    vector<int> sz2(3);
    vector<int> len(3);

    for(int i = 0; i < 3; i++)
    {
        cin >> sz1[i];
        cin >> sz2[i];
        cin >> len[i];
    }

    for(int x = 0; x < 3; x++)
    {


        int t = sqrt(sz1[x]);

        for(int i = 2; i <= t; i++)
        {
            while(sz1[x]% i == 0)
            {
                oszt1[i]++;
                sz1[x]/=i;
                //cout << sz1[x] << " " <<i << endl;
            }
        }

        oszt1[sz1[x]]++;

        t = sqrt(sz2[x]);
        for(int i = 2; i <= t; i++)
        {
            while(sz2[x]% i == 0)
            {
                oszt2[i]++;
                sz2[x]/=i;
                //cout << sz2[x] << " " <<i << endl;
            }
        }

        oszt2[sz2[x]]++;

        long ans = 1;

        for(int i= 2; i < 100000;i++)
        {
            if(oszt1[i] != 0 && oszt2[i] != 0)
            {
                if(oszt1[i] > oszt2[i])
                {
                    for(int j= 0; j < oszt1[i];j++)
                    {
                        ans*=i;
                    }
                }
                else
                {
                    for(int j= 0; j < oszt2[i];j++)
                    {
                        ans*=i;
                    }
                }
                oszt2[i] = 0;
                oszt1[i] = 0;
            }
            else if(oszt1[i] != 0)
            {
                for(int j= 0; j < oszt1[i];j++)
                {
                    ans*=i;
                }
                oszt1[i] = 0;
            }
            else if(oszt2[i] != 0)
            {
                for(int j= 0; j < oszt2[i];j++)
                {
                    ans*=i;
                }
                oszt2[i] = 0;
            }
        }
        int leng = (int)log10(ans)+1;
        // ans ->lkkt

        if(leng <= len[x])
        {
            cout << ans;
            for(int i= 0; i < len[x]-leng;i++)
            {
                cout << "0";
            }
            cout << endl;
        }
        else
        {
            cout << "-1\n";
        }


    }



}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/04ms3104 KiB
2Accepted0/04ms3424 KiB
3Accepted3/33ms3384 KiB
4Accepted3/34ms3660 KiB
5Accepted3/34ms3892 KiB
6Accepted3/34ms3892 KiB
7Accepted3/34ms4036 KiB
8Accepted3/33ms3996 KiB
9Accepted3/34ms4252 KiB
10Accepted3/34ms4212 KiB
11Accepted3/34ms4344 KiB
12Accepted3/33ms4364 KiB
13Accepted4/44ms4624 KiB
14Accepted4/44ms4588 KiB
15Accepted4/44ms4588 KiB
16Accepted4/44ms4588 KiB
17Accepted4/44ms4624 KiB