USACO :Runaround Numbers 解题报告
来源:互联网 发布:下载软件删不掉怎么办 编辑:程序博客网 时间:2024/06/10 00:33
从M+1开始逐一判断是否是循环数,用数组来维护数的各个位数,可剪枝掉含0的数以及含重复数字的数。
/*
ID: xpli1
PROG: runround
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define OUT fout
#define IN fin
ofstream fout ("runround.out");
ifstream fin ("runround.in");
unsigned long M;
int d[10];
int n[10];
int num;
bool zero,repeat;
bool check(){
int ca = num;
int ad = 0;
int va = n[ad];
while(ca--){
ad = ad + va;
while(ad+1 > num){
ad -= num;
}
va = n[ad];
d[va]++;
}
for(int i=1; i<10; i++){
if(d[i] ==1) return false;
}
return true;
}
int main()
{
IN >> M;
unsigned long i;
for(i=M+1; ; i++){
memset(d,0,10*sizeof(int));
memset(n,0,10*sizeof(int));
zero = repeat = false;
num = 0;
unsigned long m = i;
while(m){
int j = m % 10;
if(j == 0) {zero = true;break;}
d[j]++;
if(d[j]>1) {repeat = true;break;}
n[num++] = j;
m /= 10;
}
if(zero || repeat) continue;
int pa = 0;
int pb = num-1;
while(pa < pb)
{
int t = n[pa];
n[pa] = n[pb];
n[pb] = t;
pa++;
pb--;
}
if(check()){
OUT << i << endl;
return 0;
}
}
return 0;
}
- USACO :Runaround Numbers 解题报告
- 【其他】【USACO】Runaround Numbers
- usaco training-Runaround Numbers
- USACO / Runaround Numbers(穷举)
- USACO Runaround Numbers
- usaco Runaround Numbers
- [USACO]Runaround Numbers
- USACO:Runaround Numbers
- USACO-Runaround Numbers
- USACO Runaround Numbers
- USACO--2.2Runaround Numbers
- USACO 2.2 Runaround Numbers
- USACO 2.2 Runaround Numbers
- USACO-Runaround Numbers
- usaco Runaround Numbers
- USACO 2.2Runaround Numbers
- USACO 2.2 Runaround Numbers
- [USACO 2.2.3] Runaround Numbers
- SSRS2008中文本框默认中文显示乱码问题
- 解不定方程a*x+b*y=c
- getmoderange()获取模式值范围函数
- 中美印日四国程序员比较------wuzhimin
- USACO :Subset Sums 解题报告
- USACO :Runaround Numbers 解题报告
- 针对2007 Microsoft Office system进行开发的安装步骤
- 去除桌面上多IE图标
- C setlinestyle()
- Ubisense高精度定位系统
- 快速启动栏里没有桌面
- Java获取客户端真实IP地址的两种方法
- html css 表格边框
- JavaScript Cookie 的正确用法