Pagini recente » Cod sursa (job #237022) | Cod sursa (job #563191) | Cod sursa (job #2333774) | Cod sursa (job #3207210) | Cod sursa (job #270694)
Cod sursa(job #270694)
#include<fstream.h>
ifstream f("circular.in");
ofstream g("circular.out");
long i,k,n,x[10],viz1[10],nr,b,max,w,t;
int circular(int k){
int i,n,p,viz[9];b=0;
for(i=1;i<=k;i++){
viz[i]=0;
b=b*10+x[i];
}
if(b> t) return 0;
for(i=k+1;i<=9;i++) viz[i]=0;
i=1;p=1;viz[1]=1;
while(i<k){
n=x[p];
if ((p+n)%k!=0)
p=(p+n)%k;
else p=k;
viz[p]++;i++;
}
n=x[p];
if ((p+n)%k!=0)
p=(p+n)%k;
else p=k;
if(x[p]==x[1]){
for(i=1;i<=k;i++)
if(viz[i]!=1)
return 0;
return 1; }
return 0;
}
int main(){
f>>n;t=n;
w=n;
for(i=0;w!=0;i++)
w=w/10;
w=i;
for(i=1;i<=9;i++)
viz1[i]=0;
k=1; x[k]=0;
while(k>0)
if(x[k]<9)
{ x[k]=x[k]+1;
if(viz1[x[k]]==0)
{
viz1[x[k]]=1;
if(circular(k)==1)
{ nr++;if(b>max)max=b;
}
if(k<w)
{ k++;x[k]=0;}
else viz1[x[k]]=0;
}
}
else {
k--;
viz1[x[k]]=0;
}
if(nr>9)
g<<nr-9<<' '<<max;
else g<<0<<' '<<0;
//cout<<circular(1);
return 0;}