日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法竞赛入门经典|习题3-8, 循环小数(UVa202)

發(fā)布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法竞赛入门经典|习题3-8, 循环小数(UVa202) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

耗時:1小時22分。

儲備知識:

1、循環(huán)節(jié)

如果無限小數(shù)點后,從某一位起向右進行到某一位止的數(shù)字循環(huán)出現(xiàn),首位銜接,則稱這個小數(shù)為循環(huán)小數(shù),這段數(shù)字為循環(huán)節(jié)。
例如: 547/7 = 78.(142857)142857。其中, 142857就是循環(huán)節(jié)。

2、循環(huán)節(jié)的最大位數(shù)

簡單理解:
相除就是不斷的將因子乘10然后用分子去除,而因子最大不會超過分母,設分母為n,則因子最多為n-1種,
因此循環(huán)節(jié)最長為n-1。

3、如何計算高精度小數(shù)

雖然C語言有%.m的用法去計算小數(shù),但到了位數(shù)變多后計算會出現(xiàn)偏差。 因此這里采用動態(tài)數(shù)組存儲小數(shù)點后數(shù)字的方式。

代碼
#include <iostream> #include <cstdio> #include <vector> using namespace std ;int main() {int a ; //分子 int b ; //分母vector <int> v ; //存放結果cin >> a ; //輸入分子 cin >> b ; //輸入分母 a %= b ; //這一步確保a是小于b的,也就是真分數(shù)。 //將計算結果存入 v int num = 0 ; //計數(shù),確保存入的個數(shù)滿足要求while(num != (2*b-2)) {num++ ;if(a < b) {a *= 10 ;}while(a < b) {a *= 10 ;v.push_back(0) ; }v.push_back(a / b) ; a %= b ;}//判斷循環(huán)節(jié) int j ;for(int i = 1 ; i <= (b-1) ; i++) { //循環(huán)節(jié)的位數(shù)一定不大于b-1。 for ( j = i ; j < (2 * b - 2) ; j++) {if ( v[j] != v[j % i] ) break ;}if ( j == (2*b-2) ) {cout << i ; return 0 ;}} return 0 ;}

總結:World Finals名不虛傳,學到了很多。

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的算法竞赛入门经典|习题3-8, 循环小数(UVa202)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。