P9412题解

· · 题解

思路:

因为 a_{i+1}a_i 的倍数,所以很容易就能想到从小到大的第一个比前一个数大一以上的就是答案,假设 a_1∼a_k 是公差为 1 的等差数列,则 a_1∼a_{k+1}-1 的数都只能用相应个数的 1 构成,而到了 a_{k+1} 就只需要一个 a_{k+1} 就可购买。

无解的情况就很显然了,如果一共就一个数或者公差为 1 的等差数列,就无解(悲)

Code:

#include<bits/stdc++.h>
using namespace std;
int n,a[15];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++){
        if(a[i]!=a[i-1]+1){
            cout<<a[i]<<endl;
            return 0;
        }
    }
    cout<<-1<<endl;
    return 0;
}