0
点赞
收藏
分享

微信扫一扫

Codeforces 1396 A

SDKB英文 2022-07-15 阅读 63


​​传送门​​

题目大意

由n个正整数组成的数组a,执行下面操作三次后使得数组a元素全部变成0
选取一段区间[l.r],区间内的每个数都可以加上或减去区间长度(r-l+1)的倍数
输出这三次操作选取的区间及区间内每个数字变为几

思路

n=1时特判
当n>=2时,选取区间[2,n],使得每个数字都变成n的倍数就好,即a[i]*(n-1)+a[i]就是n的倍数

代码

ll a[maxn];

int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
if(n==1)
{
printf("1 1\n");
printf("%lld\n",-a[1]);
printf("1 1\n");
printf("0\n");
printf("1 1\n");
printf("0\n");
return 0;
}
printf("1 1\n");
printf("%lld\n",-a[1]);
a[1]=0;
printf("2 %d\n",n);
for(int i=2;i<=n;i++){
printf("%lld ",a[i]*(n-1));
a[i]=a[i]*n;
}
puts("");
printf("1 %d\n",n);
for(int i=1;i<=n;i++){
printf("%lld ",-a[i]);
}
puts("");
return 0;
}


举报

相关推荐

0 条评论