Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm độ dài của dấu chấm theo giá trị thập phân của 1 / n trong C ++

Giả sử chúng ta có một số n. Chúng ta phải tìm độ dài của chu kỳ theo giá trị thập phân của 1 / n. Vì vậy, nếu giá trị của n là 7, thì 1/7 =0. 142857 142857… Phần chữ in đậm đang lặp lại. Vì vậy, ở đây độ dài của khoảng thời gian là 6.

Đối với một số n, có thể có n phần dư riêng biệt trong đầu ra, nhưng khoảng thời gian có thể không bắt đầu từ phần dư đầu tiên vì một số phần dư ban đầu không lặp lại. Vì vậy, chúng ta phải đảm bảo rằng một phần còn lại từ khoảng thời gian được chọn, bắt đầu từ phần còn lại thứ (n + 1) và bắt đầu tìm kiếm lần xuất hiện tiếp theo. Khoảng cách giữa (n + 1) phần còn lại và lần xuất hiện tiếp theo, là độ dài của khoảng thời gian.

Ví dụ

#include<iostream>
using namespace std;
int periodLength(int n) {
   int remainder = 1;
   int length = 0;
   for (int i = 1; i <= n+1; i++)
   remainder = (10*remainder) % n;
   int d = remainder;
   do {
      remainder = (10*remainder) % n;
      length++;
   } while(remainder != d);
      return length;
}
int main() {
   int n = 7;
   cout << "Period length of 1/"<<n<<" is: " << periodLength(n) << endl;
}

Đầu ra

Period length of 1/7 is: 6