CUG 数学进阶
題目鏈接:http://acm.cug.edu.cn/JudgeOnline/contest.php?cid=1047
.
.
.
I 題目鏈接:http://acm.cug.edu.cn/JudgeOnline/problem.php?cid=1047&pid=8
題意:給你一個0.xxx...表示的無限循環小數,求其表示成分數形式時分母最小的那個分式。
思路:首先我們要知道如何將一個無限循環小數(已知循環結)化為分數,剩下的過程就是枚舉所有循環結來尋找滿足題目要求的答案。
下面來推導下如何將一個無限循環小數化為分數:
X = 0.a1a2…an(b1b2…bm) ?(1)
X *10^n = a1a2…an. (b1b2…bm) ?(2)
X *10^n - a1a2…an = 0. (b1b2…bm) ?(3) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
(X *10^n - a1a2…an)*10^m = b1b2…bm. (b1b2…bm) ? ? (4)
(X *10n - a1a2…an)*10^m - b1b2…bm = 0. (b1b2…bm) ?(5)
(3)和(5)相等,聯立解得:
X = (a1a2...anb1b2...bm - a1a2...an)/(10^(n+m) - 10^n) ? (*)
求出了(*)題目就基本做出來了。
** ?使用%[]格式可以輸入一個字符集,scanf("?0.%[0-9]...")格式可以輸入前面是0.開頭后面是...結尾,中間是由0-9內范圍的數字字符組成。
關于更多的字符串輸入格式可以參見以前的博文C/C++中字符串的輸入問題
** atio函數的介紹
頭文件:#include <stdlib.h>
函數原型:int atoi( const char *str );
函數功能:將字符串str轉換成一個整數并返回結果。參數str 以數字開頭,當函數從str 中讀到非數字字符則結束轉換并將結果返回。
返回值:字符串的整數表示形式
code:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <cstdlib> 6 using namespace std; 7 const int MAXN = 15; 8 typedef long long LL; 9 char str[MAXN]; 10 char ups[MAXN]; 11 char dws[MAXN]; 12 13 LL gcd(LL a, LL b) 14 { 15 return !b ? a : gcd(b, a % b); 16 } 17 18 int main() 19 { 20 while (scanf(" 0.%[0-9]...", str) == 1) 21 { 22 int len = strlen(str); 23 if (str[0] == '0' && len == 1) break; 24 LL ansu, ansd; // 分別存儲分子和分母 25 ansd = 1000000000000; 26 for (int i = 0; i < len; ++i) 27 { 28 strncpy(ups, str, i); // 拷貝前i個字符到ups作為非循環部分 29 ups[i] = 0; // 添加字符串結束符 30 strcpy(dws, str + i); // 從第i個字符開始拷貝給dws(包括字符串結束符),作為循環部分 31 int lu = strlen(ups); 32 int ld = strlen(dws); 33 LL up = atoi(ups) * (pow(10, ld) - 1) + atoi(dws); // 計算分子(atoi函數將字符串轉換成一個整數并返回結果) 34 LL down = pow(10, lu + ld) - pow(10, lu); // 計算分子 35 LL d = gcd(down, up); // 計算最大公約數,分子分母約分 36 up /= d; 37 down /= d; 38 if (down < ansd) // 更新分子和分母 39 { 40 ansu = up; 41 ansd = down; 42 } 43 } 44 printf("%lld/%lld\n", ansu, ansd); // 輸出分母最小的結果 45 } 46 return 0; 47 }?
轉載于:https://www.cnblogs.com/ykzou/p/4656437.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: MYSQL的索引类型:PRIMARY,
- 下一篇: cocos2dx-3 addImageA