zoukankan      html  css  js  c++  java
  • UVA 1594:Ducci Sequence (模拟 Grade E)

    题意:

    对于一个n元组(a0,a1,...),一次变换后变成(|a0-a1|,|a1-a2|,...)

    问1000次变换以内是否存在循环。

    思路:

    模拟,map判重

    代码:

    #include <cstdio>
    #include <cstring>
    #include <map>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    
    struct Node{
        int a[16];
        int n;
        void read() {
            for (int i = 0; i < n; i++) {
                scanf("%d", &a[i]);
            }
        }
        void ducci() {
            int tmp = a[0];
            for (int i = 0; i < n-1; i++) {
                a[i] = abs(a[i]-a[i+1]);
            }
            a[n-1] = abs(a[n-1]-tmp);
        }
    
        bool operator <(const Node &b) const {
            for (int i = 0; i < n; i++) {
                if (a[i] != b.a[i]) return a[i]<b.a[i];
            }
            return false;
        }
        bool iszero() {
            for (int i = 0; i < n; i++) {
                if (a[i] != 0) return false;
            }
            return true;
        }
    }lala;
    
    map<Node, bool>vis;
    
    int main() {
        int t;
        scanf("%d", &t);
        while (t--) {
            scanf("%d", &lala.n);
            lala.read();
            vis.clear();
            vis[lala] = true;
            bool isloop = false;
            for (int i = 0; i < 1010; i++) {
                lala.ducci();
                if (vis[lala]) {
                    isloop = true;
                    break;
                }
                vis[lala] = true;
            }
    
            if (isloop && !lala.iszero()) puts("LOOP");
            else puts("ZERO");
        }
        return 0;
    }
  • 相关阅读:
    C++构造与析构 yongmou
    坏习惯 yongmou
    Python 字符串方法
    python 列表推导式轻量级循环
    python 循环遍历字典元素
    python 短路逻辑和条件表达式
    python 迭代器
    一些关于面向对象设计的思考
    python map内建函数
    Python 列表
  • 原文地址:https://www.cnblogs.com/shinecheng/p/4031981.html
Copyright © 2011-2022 走看看