题意:
给出一个n,要你构造出一个数列,使a[i]能整除i的a[i]数最小
思路:
思维题要培养的最重要的能力是在样例中归纳出一些基本性质
样例中给出,1位置一定会被整除
而要使能整除的a[i]数最小
我们希望除了第一个元素,其他的都不要被整除
由整除的性质得:n+1必不能整除n
因此我们只需把1后面所有数+1就是答案了
Code:
const int mxn=1e5+10;
ll a[mxn],b[mxn];
void solve(){
ll n=llrd();
rep(i,1,n-1) b[i]=i+1;
b[n]=1;
rep(i,1,n) printf("%lld%c",b[i],i==n?'\n':' ');
}
总结:
1.思维题最重要的就是在样例中观察出性质,这个能力在之后的比赛中会很重要
2.构造题,最重要的,就是去找出需要满足的条件,然后去找出满足条件的边缘特解(取1或n啥的),比如这道题的条件就是要整除,那么我们如果只加个1,他就一定不满足整除了(除了1)