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);
}

相关文章推荐

usaco2.2 runround

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

USACO 2.2 Runaround Numbers (runround)

//Main Idea //First check whether the digits are unique //then check the runround property; /* ID: ...

USACO答案name that number

  • 2013年12月12日 16:46
  • 787B
  • 下载

USACO全部题目

  • 2013年12月02日 12:56
  • 617KB
  • 下载

【USACO题库】1.4.3 Arithmetic Progressions等差数列(模拟)

【USACO题库】1.4.3 Arithmetic Progressions等差数列

USACO做题代码

  • 2013年12月21日 14:48
  • 78KB
  • 下载

USACO英汉对照题目

  • 2014年03月07日 20:13
  • 705KB
  • 下载

USACO 4.2.2The Perfect Stall 完美的牛栏(二分图最大匹配)

题目描述: 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都...
  • cqbzwja
  • cqbzwja
  • 2015年07月27日 11:54
  • 1260

USACO月赛数据06年3月

  • 2014年08月13日 23:29
  • 1.64MB
  • 下载

usaco 1.1.1

  • 2012年12月29日 21:09
  • 602B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:usaco runround
举报原因:
原因补充:

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