# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1086339 | 8pete8 | Nice sequence (IZhO18_sequence) | C++17 | 5 ms | 860 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<stdio.h>
#include <stdlib.h>
#define int long long
int compare(const void* a, const void* b){
return (*(int*)a - *(int*)b);
}
const int mx=1e9;
int k=0;
int re(int m,int n){
k+=(m/n)*n;
if(m%n==0)return m;
return re(n,m%n);
}
void solve(){
k=0;
int n,m;scanf("%lld %lld",&n,&m);
int mul=1;
if(n>m){
n^=m,m^=n,n^=m;
mul=-1;
}
int x=re(m,n);//when to repeat?
k--;
if(m%n==0){
printf("%lld\n",m-1);
for(int i=0;i<m-1;i++)printf("%lld ",-mul);
printf("\n");
return;
}
int ans[k],val;
if(n==1)val=0;
else val=(mx-1)/(x-1);
int boc1=(n/x),aoc1=n-boc1,boc2=(m/x),aoc2=m-boc2;
//a first
int b=(aoc1+aoc2),a=-(boc2+boc1);
if((a*aoc1)+(b*boc1)>0)a*=-1,b*=-1;
int last=-mx;
for(int i=0;i<k;i++){
if(((i%x)==(x-1)&&(i-last-1)>(n))||((i-last-1)==n-1)){
ans[i]=b;
last=i;
}
else ans[i]=a;
}
printf("%lld\n",k);
for(int i=0;i<k;i++)printf("%lld ",mul*ans[i]);
printf("\n");
}
int32_t main(){
int t;scanf("%lld",&t);
while(t--)solve();
}
/*
+++-
3
3 1
2 3
1 1
case
*/
Compilation message (stderr)
# | 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... |