USACO 2.2.3 Runaround Numbers(枚举+模拟)
2014-04-16 21:19
435 查看
题意:给你一个数,你需要找出一个比它大的最小的数,满足题目的循环条件,且各个数位值不同
思路:直接暴力枚举,时间复杂度O(N)
#include <stdio.h>
#include <stdlib.h>
int mal;
int check(long m)
{
int a[10];
memset(a, 0, sizeof(a));
mal = 0;
while(m)
{
mal++;
if(m % 10 == 0)return 0;
a[m % 10] = 1;
m /= 10;
}
return 1;
}
int main()
{
freopen("runround.in", "r", stdin);
freopen("runround.out", "w", stdout);
int a[10], f[10];
long long i, j, k, m, len, flag, mm;
scanf("%lld", &m);
while(1)
{
m++;
if(!check(m)) continue;
len = 0;
memset(f, 0, sizeof(f));
mm = m;
while(mm)
{
len++;
a[mal - len + 1] = mm % 10;
mm /= 10;
}
j = len;
i = 1;
while(j)
{
k = (a[i] + i - 1) % len + 1;
if(f[a[k]])
break;
f[a[k]] = 1;
i = k;
j--;
}
if(j == 0)
{
printf("%lld\n", m);
break;
}
}
return 0;
}
思路:直接暴力枚举,时间复杂度O(N)
#include <stdio.h>
#include <stdlib.h>
int mal;
int check(long m)
{
int a[10];
memset(a, 0, sizeof(a));
mal = 0;
while(m)
{
mal++;
if(m % 10 == 0)return 0;
a[m % 10] = 1;
m /= 10;
}
return 1;
}
int main()
{
freopen("runround.in", "r", stdin);
freopen("runround.out", "w", stdout);
int a[10], f[10];
long long i, j, k, m, len, flag, mm;
scanf("%lld", &m);
while(1)
{
m++;
if(!check(m)) continue;
len = 0;
memset(f, 0, sizeof(f));
mm = m;
while(mm)
{
len++;
a[mal - len + 1] = mm % 10;
mm /= 10;
}
j = len;
i = 1;
while(j)
{
k = (a[i] + i - 1) % len + 1;
if(f[a[k]])
break;
f[a[k]] = 1;
i = k;
j--;
}
if(j == 0)
{
printf("%lld\n", m);
break;
}
}
return 0;
}
相关文章推荐
- USACO2.2.3 Runaround Numbers (runround)
- USACO 2.2.3 Runaround Numbers dfs
- USACO2.2.3 Runaround Numbers (runround)
- [USACO 2.2.3] Runaround Numbers
- USACO:2.2.3 Runaround Numbers 循环数
- Runaround Numbers_usaco2.2.3_预处理+二分
- USACO 2.2.3 Runaround Numbers
- USACO 2.2.3 Runaround Numbers 循环数
- USACO-Section2.2 Runaround Numbers [其他][模拟]
- usaco Runaround Numbers
- USACO-Section 2.2 Runaround Numbers (枚举)
- USACO 2.2 Runaround Numbers
- [USACO2.2]循环数 Runaround Numbers
- 2.2.3 Runaround Numbers
- USACO 2.2 Runaround Numbers(乱搞)
- 2.2.3 RUNAROUND NUMBERS 循环数
- usaco training-Runaround Numbers
- usaco Runaround Numbers
- USACO-Runaround Numbers(枚举)
- [2016/7/26][usaco 2.2]Runaround Numbers