제출 #862621

#제출 시각아이디문제언어결과실행 시간메모리
862621HanksburgerNice sequence (IZhO18_sequence)C++17
100 / 100
280 ms44100 KiB
#include <bits/stdc++.h>
using namespace std;
long long a[200005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long t;
    cin >> t;
    while (t--)
    {
        long long n, m, k=1;
        cin >> n >> m;
        if (n>m)
        {
            swap(n, m);
            k=-1;
        }
        if (m%n==0)
        {
            cout << m-1 << '\n';
            for (long long i=0; i<m-1; i++)
                cout << -k << ' ';
            cout << '\n';
            continue;
        }
        for (long long i=0; i<n; i++)
            a[i]=0;
        long long g=gcd(n, m), ind=m%n-1, x=0, y=0;
        while (ind!=(m%n-g-1+n)%n)
        {
            a[ind]=1;
            ind=(ind+m%n)%n;
            x++;
        }
        while (ind!=m%n-1)
        {
            a[ind]=-1;
            ind=(ind+m%n)%n;
            y++;
        }
        long long p, q;
        if (g==2)
        {
            for (long long i=min(1000000000LL, (1000000000*x+n-n/g)/y); i>=1; i--)
            {
                if (x==1 || (i*y-n+n/g)%x==1)
                {
                    q=i;
                    break;
                }
            }
            p=(q*y-n+n/g-1)/x;
        }
        else
        {
            for (long long i=min(1000000000LL, 1000000000*x/y); i>=1; i--)
            {
                if (x==1 || i*y%x==1)
                {
                    q=i;
                    break;
                }
            }
            p=(q*y-1)/x;
        }
        cout << n+m-g-1 << '\n';
        for (long long i=0; i<n+m-g-1; i++)
        {
            if (a[i%n]==1)
                cout << p*k << ' ';
            else if (a[i%n]==-1)
                cout << -q*k << ' ';
            else if (g==2 || i%g)
                cout << k << ' ';
            else
                cout << -(g-2)*k << ' ';
        }
        cout << '\n';
    }
}

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp: In function 'int main()':
sequence.cpp:66:17: warning: 'q' may be used uninitialized in this function [-Wmaybe-uninitialized]
   66 |             p=(q*y-1)/x;
      |                ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...