源代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define LEN 1000
void main(){
int k,i,tail[LEN],m,flag;
while(1){
scanf("%d",&k); //輸入K
if(k==1) exit(0); //如果K等於1則退出
flag=0; //初始化
i=m=1; //m為當前冪的次數,i等於k的m次冪
memset(tail,0,sizeof(int)*LEN);
/* 當K大於1000時我們只要對它的末尾三位數進行冪運算,
* 這樣不影響結果,但減少了冪運算後值的大小
*/
if(k>=LEN) {
k=k%LEN;
flag=1;
}
while(1){
i*=k;
if(i>=LEN || flag==1){
if(tail[i%LEN]==0) tail[i%LEN]=m; //這個末尾三位數是第壹次出現
else {tail[i%LEN]+=m;break;} //末尾三位數出現了第二次,退出循環
flag=1;
}
if(i>=LEN) i=i%LEN;
m++;
}
printf("%d ",tail[i%LEN]);
}
}