4 2 3 7 168
0.5 0.3 0.142857 0.005952380
模擬除法的運算。
上代碼
#include#include #include using namespace std; int main() { int a[100005],t; //a數組是用來判斷循環小數的。 scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); int n; int flag=0; scanf("%d",&n); if(n==1) { printf("1\n"); //n為一就是一 continue; } if(n<0) { n=-n; //小於0的話,先變正,做個標記 flag=1; } int l=1; a[l]=1; if(flag) printf("-0."); //輸出符號 else printf("0."); while(l) //l除不盡時,即不為0 { l*=10; //開始模擬,先乘10 printf("%d",l/n); //輸出第一位小數 l%=n; //取余,不斷重復以上操作 if(a[l]) break; a[l]=l; //讓a[l]=l ,出現相同的循環時,a[l]為真直接跳出了。保證只有一個循環節。 } printf("\n"); } return 0; }