描述:险过,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;
}
10624 - Super Number
最新推荐文章于 2020-03-24 23:06:46 发布