usaco runround

原创 2012年03月22日 15:33:38

一个纯粹的模拟题。

/*
ID: stormdp1
LANG: C++
TASK: runround
*/
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

bool judge[10];
int digit[20];
long long n;
int len;

bool isOk()
{
    memset(judge, false, sizeof(judge));
    int times = digit[len-1];
    int done = 1;
    int place = len - 1;

    judge[times] = true;
    while(done <= len) {
        place = (place - times + 10 * len) % len;   //这里给len乘上10,不然len比较短而数字比较大时会出错
        times = digit[place];
        done++;
        judge[times] = true;
    }
    
    for(int i = 0; i < len - 1; i++) {
        if(!judge[digit[i]])
            return false;
    }
    if(place != len - 1)
        return false;
    return true;
}

int main()
{
    freopen("runround.in", "rb", stdin);
    freopen("runround.out", "wb", stdout);    
    scanf("%lld", &n);
    for(long long t = n + 1; ; t++) {
        bool flag = true;
        long long tmp = t;
        len = 0;
        memset(judge, false, sizeof(judge));
        while(tmp) {      //判断0和重复数字
            int a = tmp % 10;
            if(a == 0) {
                flag = false;
                break;
            }
            if(judge[a]) {
                flag = false;
                break;
            }
            else {
                judge[a] = true;
            }
            digit[len] = a;     //预处理出各个位
            len++;
            tmp /= 10;
        }
        if(flag && isOk()) {
            printf("%lld\n", t);
            return 0;
        }
    }
    fclose(stdin);
    fclose(stdout);
}

usaco 2.2.3 runround

/* ID: cm750621 PROG: runround LANG: C++ */ #include bool vis[20],tmp[10]; char s[20]; int a[459] = ...
  • CM_yali
  • CM_yali
  • 2016年02月13日 16:40
  • 222

USACO 2.2 Runaround Numbers

这又是我想吐槽难度差的一道题……也有可能是我想得太简单了…… 大致上就是暴力穷举,每个数字检查两个条件: 1. 每位数字是否不重复 2. 能否满足runround的条件,也就是从第1位开始,向后移该位...
  • dunceiam
  • dunceiam
  • 2015年04月29日 16:37
  • 222

usaco——runround

 Runaround NumbersRunaround numbers are integers with unique digits, none of which is zero (e.g., 81...
  • topc0o0der
  • topc0o0der
  • 2010年02月20日 19:05
  • 393

USACO 2.2 Runaround Numbers (runround)

//Main Idea //First check whether the digits are unique //then check the runround property; /* ID: ...
  • u010114214
  • u010114214
  • 2014年02月23日 15:21
  • 648

USACO runround

/* ID: fairyroad TASK: runround LANG: C++ */ #include #include #include using namespace std; ifstrea...
  • fairyroad
  • fairyroad
  • 2011年07月13日 23:08
  • 1484

usaco 2.2 runround 2008.6.20

usaco 2.2 runround 2008.6.20 {简单的模拟,循环不要错了即可} { ID: PROG: runround LANG: PASCAL } program p_...
  • Batman_
  • Batman_
  • 2016年02月05日 11:10
  • 265

JZOJ1263.【USACO题库】2.2.3 Runaround Numbers循环数

题目描述循环数是那些不包括0这个数字的没有重复数字的整数 (比如说, 81362) 并且同时具有一个有趣的性质, 就像这个例子:如果你从最左边的数字开始 ( 在这个例子中是8) 数最左边这个数字个数字...
  • enjoy_pascal
  • enjoy_pascal
  • 2017年03月29日 20:05
  • 319

2.2 runround

Runaround Numbers Runaround numbers are integers with unique digits, none of which is zero (e.g., 8...
  • wawjbin
  • wawjbin
  • 2010年12月21日 20:52
  • 280

usaco2.2 runround

题目链接 要求输出下一个 runaround number (定义见原题) 思路很简单,就是 枚举 并 判断,因为判断是否为 runaround number 是常数时间,然后可能枚举的范围也...
  • kkkkahlua
  • kkkkahlua
  • 2017年02月25日 17:25
  • 81

USACO 提交测试

/** PROG:ride LANG:C++ ID:zpc19951 **/ #include #include #include #include #include using ...
  • h1021456873
  • h1021456873
  • 2016年10月26日 19:18
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:usaco runround
举报原因:
原因补充:

(最多只允许输入30个字)