E Wrong Answer
- 注意到 \(n\geq 2\) 时才可能有解,可以按如下方式构造一个 \(a_{1,2\dots n}\):
- 令 \(a_1=-1\) ,而后面的数都为正.记 \(s=\sum_{i=2}^{n} a_i\),显然题目中的程序给出的答案是 \(s*(n-1)\) .
- 为使这个答案比正确答案少 \(k\) ,那么正确答案只能是 \((s-1)*n\).
\[s(n-1)+k=(s-1)n\\ s=k+n
\]
- 由于我们可以放 \(1\) 个 \(-1\) , \(1999\) 个 \(10^6\),此时 \(s-n=1999*10^6-2000>10^9\) ,所以按照上述方法一定可以构造出一组解.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pii pair<int,int>
inline int read()
{
int x=0;
bool pos=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar())
if(ch=='-')
pos=0;
for(;isdigit(ch);ch=getchar())
x=x*10+ch-'0';
return pos?x:-x;
}
const int delta=1e6-1;
int ans[2019],n=0;
int main()
{
int k=read();
++k;
ans[++n]=-1;
while(k>=delta)
{
k-=delta;
ans[++n]=delta+1;
}
ans[++n]=k+1;
cout<<n<<endl;
for(int i=1;i<=n;++i)
cout<<ans[i]<<' ';
return 0;
}