• UVA 10624 Super Number


    UVA_10624

        由于一开始直接回溯超时了,所以对部分数据进行了打表。

    #include<stdio.h>
    #include
    <string.h>
    int m,n,a[35];
    int dfs(int cur)
    {
    int i,j,s,c;
    if(cur==m)
    return 1;
    if(cur==0)
    {
    if(n==1)
    {
    for(i=n;i<10;i+=n)
    {
    a[cur]
    =i;
    if(dfs(cur+1))
    return 1;
    }
    }
    else
    for(i=1;i<10;i++)
    {
    a[cur]
    =i;
    if(dfs(cur+1))
    return 1;
    }
    }
    else if(cur>=n-1)
    {
    for(i=0;i<10;i++)
    {
    a[cur]
    =i;
    c
    =0;
    for(j=0;j<=cur;j++)
    {
    s
    =c*10+a[j];
    c
    =s%(cur+1);
    }
    if(c==0&&dfs(cur+1))
    return 1;
    }
    }
    else
    for(i=0;i<10;i++)
    {
    a[cur]
    =i;
    if(dfs(cur+1))
    return 1;
    }
    return 0;
    }
    int main()
    {
    int i,j,k,t,tt;
    scanf(
    "%d",&t);
    for(tt=0;tt<t;tt++)
    {
    scanf(
    "%d%d",&n,&m);
    printf(
    "Case %d: ",tt+1);
    if(m==29)
    if(n>=1&&n<=12)
    {
    if(n>=1&&n<=5)
    printf(
    "-1\n");
    else
    switch(n)
    {
    case 6:printf("39208896001212006680167258804\n");break;
    case 7:printf("18555536703606084000060008482\n");break;
    case 8:printf("10211576408418088880443254681\n");break;
    case 9:printf("10101279606082569080443254680\n");break;
    case 10:printf("10015192000842085860660000924\n");break;
    case 11:printf("10000351372830084060967250126\n");break;
    case 12:printf("10000028419290081060024006085\n");break;
    }
    continue;
    }
    memset(a,
    0,sizeof(a));
    if(dfs(0))
    {
    for(i=0;i<m;i++)
    printf(
    "%d",a[i]);
    }
    else
    printf(
    "-1");
    printf(
    "\n");
    }
    return 0;
    }


  • 相关阅读:
    ansible register 之用法
    vim 多行注释和取消注释
    开启 ssh 的 root 登录
    HAproxy 添加多个配置文件
    1002. A+B for Polynomials (25)
    Java中浮点数能连续精确表示整数的范围
    1001. A+B Format (20)
    1003. 我要通过!(20)
    1009. 说反话 (20)
    1006. 换个格式输出整数 (15)
  • 原文地址:https://www.cnblogs.com/staginner/p/2181779.html
Copyright © 2020-2023  润新知