網上看到這個問題,查了一下除了字串查詢沒看到別的解法,自己寫了乙個,要考慮一些特殊情況,比如除0,負數等等,時間複雜度n^2,小數點長度n大於一萬就慢了,感覺**還能再優化一下,最多跑過11111111/59595961,一共591萬位,release要跑20秒5g記憶體,再大記憶體就不夠了。
寫的亂七八糟的,不寫點注釋以後估計自己都看不懂。
#include
#include
using
namespace
std;
int main()
if (a == 0)
if (float(a) / float(b) < 0) cout
<< "-";//負數判斷
a = abs(a);
b = abs(b);
quotient = a / b;
a -= quotient * b;
while (upperlimit *= 3,1) };
auto validate = [&]()
return
true;
};auto searchrepetation = [&]() ;
if (hasrepeat() && validate())
if (back - front == 1 && rem[front] == 0)
}else
cout
<< ")";
}return
true;}}
return
false;
};if (searchrepetation()) break;
}::system("pause");
}
迴圈小數轉化為分數
眾所周知迴圈小數是可以轉化為分數的。把迴圈小數轉化為分數一般用極限的方法,比如0.33333.可以看成是0.3 0.03 0.003 這個等比數列的值,然後求等比數列的和,設有n個數,則根據等比數列公式得和為0.3 1 0.1 n 1 0.1 化簡得 1 0.1 n 3,n為無限多個,n趨於無窮大時...
無限迴圈小數化分數
迴圈小數分為混迴圈小數 純迴圈小數兩大類。混迴圈小數可以 10 n n為小數點後非迴圈位數 所以迴圈小數化為分數都可以最終通過純迴圈小數來轉化。無限迴圈小數,先找其迴圈節 即迴圈的那幾位數字 然後將其展開為一等比數列 求出前n項和 取極限 化簡。例如 0.333333 迴圈節為3 則0.33333....
如何將迴圈小數化為分數
一 無限迴圈小數怎樣化為分數?公式 第一種 這個公式必須將迴圈節的開頭放在十分位。若不是可將原數乘10 x x為正整數 就為 12.121212 0.121212 12 100倍 1倍 99 99和12之間一條分數線 此公式需用兩位數字,其中兩位數差出乙個迴圈節。再舉乙個例子 0.00121212 ...