이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int a[200005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--)
{
int n, m, k=1;
cin >> n >> m;
if (n>m)
{
swap(n, m);
k=-1;
}
if (m%n==0)
{
cout << m-1 << '\n';
for (int i=0; i<m-1; i++)
cout << -k << ' ';
cout << '\n';
continue;
}
for (int 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++;
}
cout << n+m-g-1 << '\n';
long long p, q;
if (g==2)
{
q=min(1000000000LL, (1000000000*x+n-n/g)/y);
if ((q*y-n+n/g)%x)
p=(q*y-n+n/g)/x;
else
p=(q*y-n+n/g)/x-1;
}
else
{
q=min(1000000000LL, 1000000000*x/y);
if ((q*y)%x)
p=q*y/x;
else
p=q*y/x-1;
}
for (int 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';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |