zoukankan      html  css  js  c++  java
  • USACO Section 2.2 Runaround Numbers

    算出位置公式,然后直接模拟就可以,代码写的比较不整齐,好久不写的原因 analysis里面居然给出了打表的方式,USACO不是禁止这样么

     1 /* ID:linyvxi1
    2 PROB:runround
    3 LANG:C++
    4 */
    5 #include <stdio.h>
    6 int div_num[33];
    7 bool visited[33]={false};
    8 int len=0;
    9 bool trans(int n)
    10 {
    11 int j=0;
    12 int div_cpy[33];
    13 bool num[10]={false};
    14 while(n){
    15 div_cpy[j]=n%10;
    16 if(div_cpy[j]==0||num[n%10]){
    17 return true;
    18 }
    19 num[n%10]=true;
    20 div_num[j++]=n%10;
    21
    22 n/=10;
    23 }
    24 len=j-1;
    25 for(j=0;j<=len;j++){
    26 div_num[j]=div_cpy[len-j];
    27 }
    28 return false;
    29 }
    30 bool check()
    31 {
    32 int i;
    33 for(i=0;i<=len;i++){
    34 if(!visited[i])
    35 return false;
    36 }
    37 return true;
    38 }
    39 int main()
    40 {
    41 freopen("runround.in","r",stdin);
    42 freopen("runround.out","w",stdout);
    43 int n;
    44 scanf("%d",&n);
    45 int k;
    46 for(k=n+1;;k++){
    47 if(trans(k)){
    48 continue;
    49 }
    50 int i=0;
    51 for(i=0;i<len;i++){
    52 visited[i]=false;
    53 }
    54 visited[0]=true;
    55 int cur_num=div_num[0];
    56 int cur_pos=0;
    57 for(i=0;i<=len;i++){
    58 cur_pos=(cur_pos+cur_num%(len+1))%(len+1);
    59 cur_num=div_num[cur_pos];
    60 visited[cur_pos]=true;
    61 }
    62 if(check()&&cur_pos==0){
    63 printf("%d\n",k);
    64 break;
    65 }
    66 }
    67 }



  • 相关阅读:
    BZOJ3270: 博物馆【概率DP】【高斯消元】
    SpringCloud入门概述
    微服务的技术栈
    Markdown基础教程
    分布式架构和垂直架构
    ZooKeeper和CAP理论及一致性原则
    zookeer集群的特性
    java操作zookeeper
    Zookeeper命令使用
    Zookeeper的安装
  • 原文地址:https://www.cnblogs.com/yangce/p/2402921.html
Copyright © 2011-2022 走看看