【題解】UVa 1594 【Ducci Sequence】

这题直接用数组模拟会好一点,快的飞起

#include<cstdio>

class Solver{
public:
    int abs(int a){//绝对值
        return (a < 0) ? -a : a;
    }

    bool isZero(int len,int A[]){//判断是否为全0
        for(int i = 0;i < len;++i){
            if(A[i]){
                return false;
            }
        }
        return true;
    }

    void solve(int len,int A[]){//解题
        for(int c = 0;c < 1000;c++){//因为最多一千步,那就循环一千次
            int delta[15];//临时数组
            for(int i = 0;i < len;++i){//按题生成
                delta[i] = abs(A[i % len] - A[(i + 1) % len]);
            }

            for(int i = 0;i < len;++i){//赋值回去
                A[i] = delta[i];
            }

            if(isZero(len,A)){//判0
                printf("ZERO\n");
                return;
            }
        }
        printf("LOOP\n");
    }

    void main(){//输入和解题
        int A[15];
        int len;
        scanf("%d",&len);
        for(int i = 0;i < len;i++){
            scanf("%d",&A[i]);
        }

        solve(len,A);
    }
};

int main(){//总输入和解题
    int n;
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        (new Solver) -> main();
    }

    return 0;
}