zoukankan      html  css  js  c++  java
  • hdu 1404 找sg ***

    HDU 1404  Digital Deletions

    一串由0~9组成的数字,可以进行两个操作:1、把其中一个数变为比它小的数;2、把其中一个数字0及其右边的所以数字删除。

    两人轮流进行操作,最后把所以数字删除的人获胜,问前者胜还是后者胜。

    字符串长度为1-6,前者胜输出Yes,否则输出No.

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=1000000;
    16 int m,tt;
    17 bool sg[MAXN];
    18 void fun(int n)
    19 {
    20     int i,j,k;
    21     char ss[10];
    22     sprintf(ss,"%d",n);
    23     int len=strlen(ss);
    24     for(i=0;i<len;i++)  //在每位上添加数字
    25     {
    26         int temp=n;
    27         char tss[10];
    28         strcpy(tss,ss);
    29         while(tss[i]<'9')
    30         {
    31             tss[i]+=1;
    32             sscanf(tss,"%d",&temp);
    33             sg[temp]=1;
    34         }
    35     }
    36     if(len!=6)
    37     {
    38         int temp=n;
    39         int base=1;
    40         for(i=len;i<6;i++)
    41         {
    42             temp*=10;
    43             for(j=0;j<base;j++)
    44             {
    45                 sg[temp+j]=1;
    46             }
    47             base*=10;
    48         }
    49     }
    50 }
    51 void init()
    52 {
    53     sg[0]=1;
    54     for(int i=1;i<MAXN;i++)
    55     {
    56         if(!sg[i])
    57         {
    58             fun(i);
    59         }
    60     }
    61 }
    62 int main()
    63 {
    64     int i,j,k,ca=1;
    65     #ifndef ONLINE_JUDGE
    66     freopen("1.in","r",stdin);
    67     #endif
    68     cl(sg);
    69     init();
    70     char s[10];
    71     while(scanf("%s",s)!=EOF)
    72     {
    73         int n=0;
    74         if(s[0]=='0')
    75         {
    76             printf("Yes
    ");
    77             continue;
    78         }
    79         int len=strlen(s);
    80         for(i=0;i<len;i++)
    81         {
    82             n*=10;
    83             n+=s[i]-'0';
    84         }
    85         if(sg[n])   printf("Yes
    ");
    86         else printf("No
    ");
    87     }
    88 }
  • 相关阅读:
    halcon算子翻译——dev_set_paint
    Halcon算子翻译——dev_set_lut
    JDK、JRE、JVM各自是什么、以及什么关系
    dict 增删改查
    str 操作方法
    python基础_格式化输出(%用法和format用法)
    python spilt()函数的使用方法
    iterable- 什么是可迭代对象
    list 增 删 改 查 及 公共方法
    python 基本数据类型
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4780341.html
Copyright © 2011-2022 走看看