SRM501 Div2 Easy(250) FoxProgression

FoxProgression

#include <vector>
using namespace std;

class FoxProgression{public:
int theCount( vector <int> seq )
{
    int n=(int)seq.size();

    if ( n==1 )
        return -1;

    int a1, a2;
    bool f1, f2;

    //  等差数列
    int d = seq[1] - seq[0];
    a1 = seq[n-1] + d;
    f1 = true;
    for ( int i=0; i<n-1; i++ )
        if ( seq[i]+d != seq[i+1] )
            f1 = false;

    //  等比数列
    int r = seq[1] / seq[0];
    a2 = seq[n-1] * r;
    f2 = true;
    for ( int i=0; i<n-1; i++ )
        if ( seq[i]*r != seq[i+1] )
            f2 = false;

    if ( !f1 && !f2 )
        return 0;
    if ( !f1 && f2  || f1 && !f2 )
        return 1;
    return a1==a2 ? 1 : 2;
}};