从键盘输入一个自然数K(K>1),若存在自然数M和N(M>N),使得K^M和K^N均大于或等于1000、且它们的末尾三位数相等,则称M和N是一对?K尾相等数?。请编写程序,输出M+N值最小的K尾相等数。 

输入格式

输入数据有多组,以0结束。

输出格式

对于每个输入,输出一行。

样例输入

2
0

样例输出

120



#include<stdio.h>
#include<math.h>
int mantissa(int k,int m,int n){
    int tm,i,sum[1000];
    for(i=0;i<1000;i++)
    sum[i]=-1;
    while((int)pow(k,m)<1000)
       m++;
    tm=(int)pow(k,m)%1000;
    sum[tm]=m;
    for(i=m+1;i<1000;i++)//数组的下标为对应的尾数,内容为指数 
    {
        tm=tm*(k%1000)%1000;
        if(sum[tm]!=-1) 
        	return i+sum[tm];
        else
           	sum[tm]=i;
	}
}
int main(){
    int k;
    while(scanf("%d",&k)!=EOF){
    	if(k==0)
        break;
        printf("%d\n",mantissa(k,1,1));
    }
    return 0;
}