当前位置:编程学习 > C/C++ >>

10624 - Super Number

[cpp]  
描述:险过,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;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,