zoukankan      html  css  js  c++  java
  • USACO Runaround Numbers 模拟

    根据题意的 Runaround 规则去找比当前数大的最近的一个 Runaround数字

    模拟题~

    Source code:

    /*
    ID: wushuai2
    PROG: runround
    LANG: C++
    */
    //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
    #include <stdio.h>
    #include <iostream>
    #include <fstream>
    #include <cstring>
    #include <cmath>
    #include <stack>
    #include <string>
    #include <map>
    #include <set>
    #include <list>
    #include <queue>
    #include <vector>
    #include <algorithm>
    #define Max(a,b) (((a) > (b)) ? (a) : (b))
    #define Min(a,b) (((a) < (b)) ? (a) : (b))
    #define Abs(x) (((x) > 0) ? (x) : (-(x)))
    #define MOD 1000000007
    #define pi acos(-1.0)
    
    using namespace std;
    
    typedef long long           ll      ;
    typedef unsigned long long  ull     ;
    typedef unsigned int        uint    ;
    typedef unsigned char       uchar   ;
    
    template<class T> inline void checkmin(T &a,T b){if(a>b) a=b;}
    template<class T> inline void checkmax(T &a,T b){if(a<b) a=b;}
    
    const double eps = 1e-7      ;
    const int M = 660000         ;
    const ll P = 10000000097ll   ;
    const int INF = 0x3f3f3f3f   ;
    const int MAX_N = 20         ;
    const int MAXSIZE = 101000000;
    
    ll num;
    ll a[30];
    
    void toStr(ll num){
        int i, j, k;
        memset(a, 0, sizeof(a));
        while(num){
            a[++a[0]] = num % 10LL;
            num /= 10LL;
        }
        for(i = 1; i <= a[0] / 2; ++i){
            swap(a[i], a[a[0] - i + 1]);
        }
    }
    
    void toNum(){
        int i, j, k;
        num = 0;
        ll nl = 1LL;
        for(i = a[0]; i >= 1; --i){
            num += nl * a[i];
            nl *= 10LL;
        }
    }
    
    bool solve(){
        int i, j, k, pos;
        ll ans[10];
        ll cur = a[1];
        ll b[30], bigg = 0;
        bool vis[30];
        memset(vis, 0, sizeof(vis));
        memset(ans, 0, sizeof(ans));
        for(i = 1; i <= a[0]; ++i){
            checkmax(bigg, a[i]);
            if(a[i] == 0)   return false;
            if(ans[a[i]])   return false;
            ans[a[i]] = true;
        }
        for(;;){
            memset(b, 0, sizeof(b));
            for(pos = 1; pos <= a[0]; ++pos){
                if(cur == a[pos])   break;
            }
            for(i = pos; i <= cur + pos - 1; ++i){
                b[++b[0]] = a[i % a[0] + 1];
            }
            /*
            for(i = 1; i <= b[0]; ++i){
                cout << b[i];
            }
            cout << endl;
            */
            if(vis[b[b[0]]]) return false;
            else vis[b[b[0]]] = true;
            for(i = 1; i <= bigg; ++i){
                if(vis[i] != ans[i])    break;
            }
            if(i == bigg + 1)   return true;
            cur = b[b[0]];
        }
    }
    
    int main() {
        ofstream fout ("runround.out");
        ifstream fin ("runround.in");
        int i, j, k, t, n, s, c, w, q;
        fin >> num;
        ++num;
        toStr(num);
        /*
        for(i = 1; i <= a[0]; ++i){
            cout << a[i];
        }
        cout << endl;
        */
        while(!solve()){
            //cout << num << endl;
            toNum();
            ++num;
            toStr(num);
        }
        fout << num << endl;
    
        fin.close();
        fout.close();
        return 0;
    }
  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/4295437.html
Copyright © 2011-2022 走看看