10624 - Super Number

来源:互联网 发布:阳台啪的感觉知乎 编辑:程序博客网 时间:2024/05/06 19:06
描述:险过,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;}

原创粉丝点击