#include<iostream>
using namespace std;
int main()
{ int i,I,j,m,sum,j1,j2,j3,L=0,p,q,a[10000],b[100],X[10000],Y[10000],Z[10000];
int x1=1,y1=3,z1=9,x,y,z;
for(x=0;x<10000;x++)
{ p=x1;sum=0;
while(x1>0)
{
m=x1%10;
x1=x1/10;
sum=sum+m;
}
x1=p;
X[x]=x1;
x1=x1+sum;
}
for(y=0;y<10000;y++)
{ p=y1;sum=0;
while(y1>0)
{
m=y1%10;
y1=y1/10;
sum=sum+m;
}
y1=p;
Y[y]=y1;
y1=y1+sum;
}
for(z=0;z<10000;z++)
{ p=z1;sum=0;
while(z1>0)
{
m=z1%10;
z1=z1/10;
sum=sum+m;
}
z1=p;
Z[z]=z1;
z1=z1+sum; //固定的东西就不放在循环体中,避免错误;
}
for(i=0;i<100;i++)
{
cin>>b[i];
if(b[i]==0)
{break;}
} //使所有一起输入,然后一起输出
for(I=0;I<i;I++)
{ L++;
p=b[I];
for(j=0;j<10000;j++)
{q=p;sum=0; //还原n与sum ,即变动的元都要还原
while(p>0)
{
m=p%10;
p=p/10;
sum=sum+m;
}
p=q;
a[j]=p;//先赋值再增
p=p+sum;
}
j=0;j1=0;j2=0;j3=0;x=0;y=0;z=0; // 恢复被改变的元的值;
while(j<10000&&x<10000&&y<10000&&z<10000)
{
if(a[j1]==X[x])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 1 at "<<a[j1]<<endl;break;}
if(a[j2]==Y[y])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 3 at "<<a[j2]<<endl;break;}
if(a[j3]==Z[z])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 9 at "<<a[j3]<<endl;break;}//河流交汇点的找法
if(a[j1]>X[x])
{x++;}
if(a[j1]<X[x])
{j1++;}
if(a[j2]>Y[y])
{y++;}
if(a[j2]<Y[y])
{j2++;}
if(a[j3]>Z[z])
{z++;}
if(a[j3]<Z[z])
{j3++;} //必须同一个while,三个同时变化,同时比较,j1,j2,j3 实现
}
}
return 0;
}
using namespace std;
int main()
{ int i,I,j,m,sum,j1,j2,j3,L=0,p,q,a[10000],b[100],X[10000],Y[10000],Z[10000];
int x1=1,y1=3,z1=9,x,y,z;
for(x=0;x<10000;x++)
{ p=x1;sum=0;
while(x1>0)
{
m=x1%10;
x1=x1/10;
sum=sum+m;
}
x1=p;
X[x]=x1;
x1=x1+sum;
}
for(y=0;y<10000;y++)
{ p=y1;sum=0;
while(y1>0)
{
m=y1%10;
y1=y1/10;
sum=sum+m;
}
y1=p;
Y[y]=y1;
y1=y1+sum;
}
for(z=0;z<10000;z++)
{ p=z1;sum=0;
while(z1>0)
{
m=z1%10;
z1=z1/10;
sum=sum+m;
}
z1=p;
Z[z]=z1;
z1=z1+sum; //固定的东西就不放在循环体中,避免错误;
}
for(i=0;i<100;i++)
{
cin>>b[i];
if(b[i]==0)
{break;}
} //使所有一起输入,然后一起输出
for(I=0;I<i;I++)
{ L++;
p=b[I];
for(j=0;j<10000;j++)
{q=p;sum=0; //还原n与sum ,即变动的元都要还原
while(p>0)
{
m=p%10;
p=p/10;
sum=sum+m;
}
p=q;
a[j]=p;//先赋值再增
p=p+sum;
}
j=0;j1=0;j2=0;j3=0;x=0;y=0;z=0; // 恢复被改变的元的值;
while(j<10000&&x<10000&&y<10000&&z<10000)
{
if(a[j1]==X[x])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 1 at "<<a[j1]<<endl;break;}
if(a[j2]==Y[y])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 3 at "<<a[j2]<<endl;break;}
if(a[j3]==Z[z])
{cout<<"Case #"<<L<<endl;
cout<<"first meets river 9 at "<<a[j3]<<endl;break;}//河流交汇点的找法
if(a[j1]>X[x])
{x++;}
if(a[j1]<X[x])
{j1++;}
if(a[j2]>Y[y])
{y++;}
if(a[j2]<Y[y])
{j2++;}
if(a[j3]>Z[z])
{z++;}
if(a[j3]<Z[z])
{j3++;} //必须同一个while,三个同时变化,同时比较,j1,j2,j3 实现
}
}
return 0;
}