📄 2760235_pe.cpp
字号:
#include<stdio.h>
#define MAX 1001
int list[MAX][2],tail;
inline void initList(){
int i;
for(i=0;i<MAX;i++)list[i][0]=-1;
}
inline int in(int k){
if(list[k][0]!=-1){
return k;
}else{
return -1;
}
}
inline void add(int k,int i){
if(list[k][0]!=-1)return;
list[k][0]=k;
list[k][1]=i;
}
int remain;
inline void print(int i){
char bu[999];
int l,j;
l=sprintf(bu,"%d",i);
for(j=0;j<l;j++){
printf("%c",bu[j]);
remain--;
if(!remain){
printf("\n");
remain=50;
}
}
}
inline void print(char c[]){
int i;
for(i=0;c[i];i++){
printf("%c",c[i]);
remain--;
if(!remain){
printf("\n");
remain=50;
}
}
}
int main(){
int a,b,i,x;
while(1){
scanf("%d%d",&a,&b);
if(!a && !b)break;
initList();
remain=49;
printf(".");
if(!a)printf("0");
x=1;
i=0;
while(a){
if(!x){
if(in(a)!=-1)break;
}else{
x=0;
}
add(a,i++);
a*=10;
if(a<b){
print("0");
}else{
print(a/b);
a%=b;
}
}
if (remain)
printf("\n");
if(!a){
printf("This expansion terminates.\n");
}else{
printf("The last %d digits repeat forever.\n",i-list[in(a)][1]);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -