P1467 循环数 Runaround Numbers

    • 89通过
    • 233提交
  • 题目提供者该用户不存在
  • 标签USACO
  • 难度普及/提高-

提交  讨论  题解

最新讨论

  • 暂时没有讨论

题目描述

循环数是那些不包括0且没有重复数字的整数(比如81362)并且还应同时具有一个有趣的性质, 就像这个例子:

如果你从最左边的数字开始(在这个例子中是8)向右数最左边这个数(如果数到了最右边就回到最左边),你会停止在另一个新的数字(如果停在一个相同的数字上,这个数就不是循环数).就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6

重复这样做 (这次从“6”开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1 3 6 2, 也就是2

再这样做 (这次数两个): 8 1

再一次 (这次一个): 3

又一次: 6 2 8 这时你回到了起点,在经过每个数字一次后回到起点的就是循环数。如果你经过每一个数字一次以后没有回到起点, 你的数字不是一个循环数。

给你一个数字 M (在1到9位之间), 找出第一个比 M大的循环数, 输出数据保证结果能用一个无符号长整型数(21亿)装下。 (追加提醒:循环数每个数位都必须要访问到)

输入输出格式

输入格式:

仅仅一行, 包括M.

输出格式:

仅仅一行,输出第一个比M大的循环数。

输入输出样例

输入样例#1:

81361
输出样例#1:

81362

说明

翻译来自NOCOW

USACO 2.2

分析:这道题有一半是在考语文......其实读懂了就会发现这道题就是一道枚举的水题,因为没告诉范围,所以只要找到符合条件的数就可以,关键是怎么判断,首先判重,并在判重中看看原数有没有0,然后按照题目说的性质一步一步来,注意取模就行.不过要注意的是,因为要对多个数进行处理,每次进行处理之前要先初始化数组!

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n,num[],vis1[],vis2[],temp,cur;
bool flag = true; void fanzhuan()
{
int j = temp;
for (int i = ; i < j; i++)
swap(num[i], num[j--]);
} bool panchong(int x)
{
int vis[];
memset(vis, , sizeof(vis));
while (x)
{
if (x % == )
return false;
if (vis[x % ])
return false;
vis[x % ] = ;
x /= ;
}
return true;
} bool check(int x)
{
memset(num, , sizeof(num));
memset(vis1, , sizeof(vis1));
memset(vis2, , sizeof(vis2));
temp = ;
while (x) {
if (vis1[(num[temp] = x % )])
return false;
vis1[num[temp++]] = true;
x /= ;
}
temp--;
fanzhuan();
cur = ;
while (!vis2[num[cur]])
{
vis2[num[cur]] = ;
cur += num[cur] % temp;
if (cur > temp)
cur %= temp;
}
if (num[cur] != num[])
return false;
for (int i = ; i <= temp; i++)
if (!vis2[num[i]])
return false;
return true;
} int main()
{
scanf("%d", &n);
int i = n + ;
while ()
{
if (panchong(i))
if (check(i) == true)
break;
i++;
}
printf("%d\n", i); return ;
}

洛谷P1467 循环数 Runaround Numbers的更多相关文章

  1. 洛谷 P6218 [USACO06NOV] Round Numbers S

    洛谷 P6218 [USACO06NOV] Round Numbers S 题目描述 如果一个正整数的二进制表示中,\(0\) 的数目不小于 \(1\) 的数目,那么它就被称为「圆数」. 例如,\(9 ...

  2. USACO Section 2.2 循环数 Runaround Numbers

    OJ:http://www.luogu.org/problem/show?pid=1467 #include<iostream> #include<vector> #inclu ...

  3. 洛谷P3459 [POI2007]MEG-Megalopolis [树链剖分]

    题目传送门 MEG 题目描述 Byteotia has been eventually touched by globalisation, and so has Byteasar the Postma ...

  4. 洛谷 P3478 [POI2008]STA-Station

    题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...

  5. 【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)

    题目来源:洛谷P3952 思路 纯模拟没啥可说的了 果然好复杂 参考了你谷一个40行代码 代码 #include<iostream> #include<cstdio> #inc ...

  6. [洛谷P3527] [POI2011]MET-Meteors

    洛谷题目链接:[POI2011]MET-Meteors 题意翻译 Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1 ...

  7. [洛谷P3444] [POI2006]ORK-Ploughing

    洛谷题目链接[POI2006]ORK-Ploughing 题目描述 Byteasar, the farmer, wants to plough his rectangular field. He ca ...

  8. COCI2017-2018#3 Dojave || 洛谷P4443

    题目传送门............................................................................................... ...

  9. 洛谷 P3048 [USACO12FEB]牛的IDCow IDs

    题目描述 Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, ...

随机推荐

  1. Android SDK 4.0.3 开发环境配置及运行

    最近又装了一次最新版本的ADK环境 目前最新版是Android SDK 4.0.3 本文的插图和文本虽然是Android2.2的 步骤都是一样的,如果安装的过程中遇到什么问题,可以留言,我会尽快回复! ...

  2. 黄聪:WordPress 多站点建站教程(五):获取子站点用户信息(通过输入站点ID号来获取该站点的所有用户)

    得到站点ID为1的用户 <ul> <?php $blogusers = get_users('blog_id=1'); foreach ($blogusers as $user) { ...

  3. Redis应用案例,查找某个值的范围(转)

    本文来自Redis在Google Group上的一个问题,有一位同学发贴求助,说要解决如下的一个问题:他有一个IP范围对应地址的列表,现在需要给出一个IP的情况下,迅速的查找到这个IP在哪个范围,也就 ...

  4. [实变函数]2.5 Cantor 三分集

    1 Cantor 三分集的构造:                $$\bex P=\cap_{n=1}^\infty F_n.                   \eex$$ 2 Cantor 三分 ...

  5. UCOS-信号量(学习笔记)

    当事件控制块类型为OS_Event_Type_SEM类型时就是信号量,包含2个内容:信号量计数器OSEventcnt和等待列表OSEventTbl[]. 一创建信号量:OSSemCreat(int16 ...

  6. You need tcl 8.5 or newer in order to run the Redis test

    安装Redis时候make test出现的 , 不用下什么tcl8.5再tar了 , 直接yum install tcl就好.

  7. Think in UML笔记第1章--为什么要UML

    1.1 面向过程还是面向对象 面向过程和面向对象都是一种软件技术.例如把面向过程归纳为结构化程序设计.DFD图.ER模型.UC矩阵等,而面向对象则被归纳为继承.封装.多态.复用等具体的技术.事实上,上 ...

  8. 使用maven下载依赖包及maven常见问题汇总

    最近下载了SPRING3.1.4,发现只有SPRING相关的源码,没有其依赖的jar包.SPRING依赖的jar相当多,自己一个一个的下载比较费劲,就仔细阅读了SPRING下载说明,新版本的SPRIN ...

  9. asp.net读取txt并导入数据库

    源地址:http://www.cnblogs.com/hfzsjz/p/3214649.html

  10. menu({postion:{my:"left top"},at:"right bottom"})里的my与at会冲突吗

    my(默认值:"center")类型:String描述:定义被定位元素上对准目标元素的位置:"horizontal vertical" 对齐方式.一个单一的值, ...