347

#include <iostream>
#include <vector>
#include <map>
#include <cstring>
#include <cstdio>

using namespace std;

map<int,int> np,mp;
vector<int> vb;
int arr[10];
int run[9999999+1];
int len;

bool check(int a)
{
     char in[100];
	int x;

	if(a<100)
	len=2;
	else if(a<1000)
	len=3;
	else if(a<10000)
	len=4;
	else if(a<100000)
	len=5;
	else if(a<1000000)
	len=6;
	else if(a<10000000)
	len=7;

    int d[10];
    for(int i=0;i<10;i++)
	d[i]=0;
	int k=len-1;
	while(a)
	{
		x=a%10;
		arr[k]=x;
		if(d[x]==1 || x==0)
		{
			return 0;
		}
		k--;

		d[x]=1;
		a/=10;
	}

	return 1;
}

int sontn(int a)
{
    if(!check(a))
    return 0;

    int pos=0,n;
    //f=1;
	mp.clear();
	int d[10]={0};
	for(int i=0;i<10;i++)
	d[i]=0;
    for(int x=len-1;x>=0;x--)
	{
		n=arr[pos];
		pos =(pos+n)%len;
		if(d[arr[pos]]==1)
		{
			return 0;
		}
			else
				d[arr[pos]]=1;
	}
	return 1;
}
int main()
{
	int k,n,c=1,found;
	int num,org,f;

	for(int i=9682415;i>=10;i--)
	{
		if(sontn(i))
		run[i]=i;
		else
		run[i]=run[i+1];

  }

	while(cin>>num)
	{
		if(num==0)
        break;
		cout<<"Case "<<c++<<": "<<run[num]<<"\n";
		//
	}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *