题意:给定长度为n的数组a,可以对a进行两种操作:1.把前i个数都加上x;2.对前i个数都取模x。要求你在n+1步操作内把数组a变成完全递增的数组。
题解:把a构造成为1~n的数组,从前往后,每次对a[i]取模a[i]-i(数组从1开始输入,我的代码是从0开始),为了使前面的数不被后面的数取模影响,先把所有数都加上一个足够大的数,这样刚好n+1步。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int n,a[2010];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
a[i]+=100100;
}
cout<<n+1<<endl;
cout<<"1 "<<n<<" 100100\n";
for(int i=0;i<n;i++)
{
cout<<"2 "<<i+1<<' '<<a[i]-i-1<<endl;
}
return 0;
}