#include<stdio.h>
int main(){
int i,x,cnt=0,cnt0=0,n=1;
int a[1000]={0};
scanf("%d",&x);
while(1){
cnt++;
a[cnt]=n/x;
if(cnt0==0&&a[cnt]!=0) cnt0=cnt;
if(n%x==0) break;
n=n%x*10+1;
}
for(i=cnt0;i<cnt+1;i++){
printf("%d",a[i]);
}
printf(" %d\n",cnt);
return 0;
}
总结:
模拟除法,被除数n,初值为1,当除以x后有余数时,就个位再加1,直到余数为0.
cnt0记录的为数组中第一个不为零的位置。
也可以不用数组,出来一个数就打印一个数,如下:
#include<stdio.h>
int main(){
int i,x,cnt=0,flag=0,n=1;
scanf("%d",&x);
while(1){
cnt++;
if(n/x!=0) flag=1;
if(flag) printf("%d",n/x);
if(n%x==0) break;
n=n%x*10+1;
}
printf(" %d\n",cnt);
return 0;
}