现在的位置: 首页 > 综合 > 正文

10624 – Super Number

2013年02月26日 ⁄ 综合 ⁄ 共 650字 ⁄ 字号 评论关闭
描述:险过,2.856s,题意就是前几位能被几整除,n表示是从第n位开始,m表示是到m位结束,如果在这期间存在一个数可以整除从n到m区间的任何一个数,那就输出,如果存在多个,选取最小的一个输出,如果不存在,输出-1
#include <cstdio>
#include <cstdlib>
#include <cstring>
int n,m,flag,sum;
char str[35];
int cal(int cur)
{
    int c=0;
    for(int i=0; i<cur; i++) c=(c*10+str[i]-'0')%cur;
    return c;
}
void dfs(int cur)
{
    if(flag) return;
    if(cur==m)
    {
        flag=1;
        printf("%s\n",str);
        return;
    }
    for(int i=0; i<10; ++i)
    {
        str[cur]='0'+i;
        if(cur<n-1||!cal(cur+1))dfs(cur+1);
        if(flag) return;
    }
}
int main()
{
    //freopen("a.txt","r",stdin);
    int t,c=1;
    scanf("%d",&t);
    while(c<=t)
    {
        scanf("%d %d",&n,&m);
        printf("Case %d: ",c++);
        flag=sum=0;
        if(n<m)
            for(int i=1; i<10; ++i)
            {
                str[0]=i+'0';
                dfs(1);
                if(flag) break;
            }
        if(!flag) printf("-1\n");
    }
    return 0;
}

抱歉!评论已关闭.