Codeforces

分析

我们直接令 $n = 2000$,并在前面放 $1998$ 个 $0$,然后设 $1999$ 项为 $-d$ ,$2000$ 项为 $x+d$ 。

那么正确答案是 $2000x$ ,Alice 算出来的答案是 $x+d$ ,两者的差为 $1999x-d$ 。

那么 $1999x-d=k\Rightarrow x=\frac{k+d}{1999}$ 。随便找一组满足条件的 $x$ 和 $d$ 即可。

代码

// ===================================
//   author: M_sea
//   website: http://m-sea-blog.com/
// ===================================
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define re register
using namespace std;

inline int read() {
    int X=0,w=1; char c=getchar();
    while (c<'0'||c>'9') { if (c=='-') w=-1; c=getchar(); }
    while (c>='0'&&c<='9') X=X*10+c-'0',c=getchar();
    return X*w;
}

int main() {
    int k=read(),d=1999-k%1999,x=(k+d)/1999;
    puts("2000");
    for (re int i=1;i<=1998;++i) printf("%d ",0);
    printf("%d %d\n",-d,x+d);
    return 0;
}
最后修改:2021 年 03 月 23 日 07 : 41 PM