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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Vijos P1696 数与连分数【连分数】

發(fā)布時間:2024/1/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vijos P1696 数与连分数【连分数】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

...

...:“這個簡單...我們還是去剛才的海邊唄...”
...:"其實今晚...我是有一定要完成的事情的..." .,
威尼斯真的是一個美麗的城市...很小的時候我就聽說這個地方..

這一天..從貝魯特歸來的商隊..除了布匹和香辛料...還帶來的東方的數字....
也有人曾經討論過它們的歷史...
只是很長時間這些都不被那些數學家們所重視..

人們懷著敬畏的心情..小心的審視著這些新奇的東西...
而它們..給生活在這片土地上的人們所帶來的..是很大的幫助..
...

描述

寫一個程序...可以實現在連分數和分數之間的互相轉換...

樣例1

樣例輸入1

[2;3,7] 51/22

樣例輸出1

51/22 [2;3,7]

限制

出題人不透露

提示

多組測試數據:
...每一個測試點有多組數據...數據的組數不超過100組...
對于Pascal里...可以這樣子
while not eof do begin
...
end;
來實現這點..
(至于..C++里..我就不太清楚了...)
約分:
計算結果最后是要約分的...但是..在分數轉向連分數的時候..
我們不保證輸入的數據是約分.....
連分數的輸入格式:
連分數的輸入格式是按照wiki里寫的...
第一個位置的分號應該是為了避免可能的歧義~..
English:
我們校內的時候又同學抱怨英文看不懂...可以訪問這個頁...蠻好用的...
或者在wiki左側的語言欄里最下面找中文切換一下就行了...
Range:
數字的規(guī)模都很小...
也就是它們都不會超過longint范圍里....
包括中間的數據...
連分數的項數也不會超過100項..
See also:
連分數的其它知識..可以閱讀....至于這個.....


問題鏈接:Vijos P1696 數與連分數

問題分析

連分數與分之間相互轉換問題。

需要了解和掌握有關連分數的概念與表示方式,可以查看中英文版的維基百科的“連分數”。

剩下的就是簡單的分數計算問題了。

程序說明

需要考慮特例的情況。例如,連分數只有a0的情況,分數的分母為1的情況。

程序中不考慮約分的問題。

程序中的迭代計算問題盡可能地簡潔。

題記

把功能封裝到函數是一種好的做法,程序邏輯更加簡潔。

做分數題,又回到少年時代的感覺。


參考鏈接:(略)


AC的C++程序如下:

#include <iostream> #include <cstdio> #include <cctype> #include <string> #include <vector>using namespace std;string s;void continuedfraction2fraction(string& s) {int i=1;vector<int> a;while(s[i] != ']') {if(isdigit(s[i])) {int v = 0;while(isdigit(s[i])) {v *= 10;v += s[i] - '0';i++;}a.push_back(v);} elsei++;}if(a.size() == 1)printf("%d\n", a.back());else {int n, d;n = a.back();d = 1;a.pop_back();while(a.size() != 0) {swap(n, d);n = a.back() * d + n;a.pop_back();}printf("%d/%d\n", n, d);} }void fraction2continuedfraction(int n, int d) {int nextd;char separator = ';';if(n % d == 0)printf("[%d]\n", n / d);else {printf("[");printf("%d", n / d);nextd = n % d;n = d;d = nextd;while(d != 0) {printf("%c", separator);printf("%d", n / d);nextd = n % d;n = d;d = nextd;separator = ',';}printf("]\n");} }int main() {while(getline(cin, s)) {if(s[0] == '[') {continuedfraction2fraction(s);} else {int numerator, denominator;sscanf(&s[0], "%d/%d", &numerator, &denominator);fraction2continuedfraction(numerator, denominator);}}return 0; }



轉載于:https://www.cnblogs.com/tigerisland/p/7563750.html

總結

以上是生活随笔為你收集整理的Vijos P1696 数与连分数【连分数】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。