It is easy to see that for every fraction in the form(k> 0), we can always find two positive integersxandy,x≥y, such that:
.
Now our question is: can you write a program that counts how many such pairs ofxandythere are for any givenk?
Input
Input contains no more than 100 lines, each giving a value ofk(0 <k≤ 10000).
Output
For eachk, output the number of corresponding (x,y) pairs, followed by a sorted list of the values ofxandy, as shown in the sample output.
Sample Input
2 12
Sample Output
2 1/2 = 1/6 + 1/3 1/2 = 1/4 + 1/4 8 1/12 = 1/156 + 1/13 1/12 = 1/84 + 1/14 1/12 = 1/60 + 1/15 1/12 = 1/48 + 1/16 1/12 = 1/36 + 1/18 1/12 = 1/30 + 1/20 1/12 = 1/28 + 1/21 1/12 = 1/24 + 1/24
更好的测试数据:
In:
3 1 4 15 92 653 589 793 2384 626 4338 3279 502 88
Out:
2 1/3 = 1/12 + 1/4 1/3 = 1/6 + 1/6 1 1/1 = 1/2 + 1/2 3 1/4 = 1/20 + 1/5 1/4 = 1/12 + 1/6 1/4 = 1/8 + 1/8 5 1/15 = 1/240 + 1/16 1/15 = 1/90 + 1/18 1/15 = 1/60 + 1/20 1/15 = 1/40 + 1/24 1/15 = 1/30 + 1/30 8 1/92 = 1/8556 + 1/93 1/92 = 1/4324 + 1/94 1/92 = 1/2208 + 1/96 1/92 = 1/1150 + 1/100 1/92 = 1/621 + 1/108 1/92 = 1/460 + 1/115 1/92 = 1/276 + 1/138 1/92 = 1/184 + 1/184 2 1/653 = 1/427062 + 1/654 1/653 = 1/1306 + 1/1306 5 1/589 = 1/347510 + 1/590 1/589 = 1/18848 + 1/608 1/589 = 1/11780 + 1/620 1/589 = 1/1550 + 1/950 1/589 = 1/1178 + 1/1178 5 1/793 = 1/629642 + 1/794 1/793 = 1/49166 + 1/806 1/793 = 1/11102 + 1/854 1/793 = 1/4514 + 1/962 1/793 = 1/1586 + 1/1586 14 1/2384 = 1/5685840 + 1/2385 1/2384 = 1/2844112 + 1/2386 1/2384 = 1/1423248 + 1/2388 1/2384 = 1/712816 + 1/2392 1/2384 = 1/357600 + 1/2400 1/2384 = 1/179992 + 1/2416 1/2384 = 1/91188 + 1/2448 1/2384 = 1/46786 + 1/2512 1/2384 = 1/40528 + 1/2533 1/2384 = 1/24585 + 1/2640 1/2384 = 1/21456 + 1/2682 1/2384 = 1/11920 + 1/2980 1/2384 = 1/7152 + 1/3576 1/2384 = 1/4768 + 1/4768 5 1/626 = 1/392502 + 1/627 1/626 = 1/196564 + 1/628 1/626 = 1/98595 + 1/630 1/626 = 1/1878 + 1/939 1/626 = 1/1252 + 1/1252 23 1/4338 = 1/18822582 + 1/4339 1/4338 = 1/9413460 + 1/4340 1/4338 = 1/6277086 + 1/4341 1/4338 = 1/4708899 + 1/4342 1/4338 = 1/3140712 + 1/4344 1/4338 = 1/2095254 + 1/4347 1/4338 = 1/1572525 + 1/4350 1/4338 = 1/1049796 + 1/4356 1/4338 = 1/701310 + 1/4365 1/4338 = 1/527067 + 1/4374 1/4338 = 1/352824 + 1/4392 1/4338 = 1/236662 + 1/4419 1/4338 = 1/178581 + 1/4446 1/4338 = 1/120500 + 1/4500 1/4338 = 1/82422 + 1/4579 1/4338 = 1/62419 + 1/4662 1/4338 = 1/43380 + 1/4820 1/4338 = 1/30366 + 1/5061 1/4338 = 1/23859 + 1/5302 1/4338 = 1/17352 + 1/5784 1/4338 = 1/13014 + 1/6507 1/4338 = 1/10845 + 1/7230 1/4338 = 1/8676 + 1/8676 5 1/3279 = 1/10755120 + 1/3280 1/3279 = 1/3587226 + 1/3282 1/3279 = 1/1197928 + 1/3288 1/3279 = 1/13116 + 1/4372 1/3279 = 1/6558 + 1/6558 5 1/502 = 1/252506 + 1/503 1/502 = 1/126504 + 1/504 1/502 = 1/63503 + 1/506 1/502 = 1/1506 + 1/753 1/502 = 1/1004 + 1/1004 11 1/88 = 1/7832 + 1/89 1/88 = 1/3960 + 1/90 1/88 = 1/2024 + 1/92 1/88 = 1/1056 + 1/96 1/88 = 1/792 + 1/99 1/88 = 1/572 + 1/104 1/88 = 1/440 + 1/110 1/88 = 1/330 + 1/120 1/88 = 1/264 + 1/132 1/88 = 1/209 + 1/152 1/88 = 1/176 + 1/176
In:
2 12 8999 10000
Out:
2 1/2 = 1/6 + 1/3 1/2 = 1/4 + 1/4 8 1/12 = 1/156 + 1/13 1/12 = 1/84 + 1/14 1/12 = 1/60 + 1/15 1/12 = 1/48 + 1/16 1/12 = 1/36 + 1/18 1/12 = 1/30 + 1/20 1/12 = 1/28 + 1/21 1/12 = 1/24 + 1/24 2 1/8999 = 1/80991000 + 1/9000 1/8999 = 1/17998 + 1/17998 41 1/10000 = 1/100010000 + 1/10001 1/10000 = 1/50010000 + 1/10002 1/10000 = 1/25010000 + 1/10004 1/10000 = 1/20010000 + 1/10005 1/10000 = 1/12510000 + 1/10008 1/10000 = 1/10010000 + 1/10010 1/10000 = 1/6260000 + 1/10016 1/10000 = 1/5010000 + 1/10020 1/10000 = 1/4010000 + 1/10025 1/10000 = 1/3135000 + 1/10032 1/10000 = 1/2510000 + 1/10040 1/10000 = 1/2010000 + 1/10050 1/10000 = 1/1572500 + 1/10064 1/10000 = 1/1260000 + 1/10080 1/10000 = 1/1010000 + 1/10100 1/10000 = 1/810000 + 1/10125 1/10000 = 1/791250 + 1/10128 1/10000 = 1/635000 + 1/10160 1/10000 = 1/510000 + 1/10200 1/10000 = 1/410000 + 1/10250 1/10000 = 1/400625 + 1/10256 1/10000 = 1/322500 + 1/10320 1/10000 = 1/260000 + 1/10400 1/10000 = 1/210000 + 1/10500 1/10000 = 1/170000 + 1/10625 1/10000 = 1/166250 + 1/10640 1/10000 = 1/135000 + 1/10800 1/10000 = 1/110000 + 1/11000 1/10000 = 1/90000 + 1/11250 1/10000 = 1/88125 + 1/11280 1/10000 = 1/72500 + 1/11600 1/10000 = 1/60000 + 1/12000 1/10000 = 1/50000 + 1/12500 1/10000 = 1/42000 + 1/13125 1/10000 = 1/41250 + 1/13200 1/10000 = 1/35000 + 1/14000 1/10000 = 1/30000 + 1/15000 1/10000 = 1/26000 + 1/16250 1/10000 = 1/25625 + 1/16400 1/10000 = 1/22500 + 1/18000 1/10000 = 1/20000 + 1/20000
初次尝试的AC解法,要测试精度!应该有更好的解法,能绕过精度问题
#define RUN #ifdef RUN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <vector> #include <list> #include <cctype> #include <algorithm> #include <utility> #include <math.h> using namespace std; #define LL long long #define MAXN 10001 LL xbuf[MAXN]; LL ybuf[MAXN]; void printout(LL k, LL n){ printf("%lld\n", n); for(int i=0; i<n; i++){ printf("1/%lld = 1/%lld + 1/%lld\n", k, xbuf[i], ybuf[i]); } } void play(LL k){ LL y = 1; LL cnt = 0; memset(xbuf, 0, sizeof(xbuf)); memset(ybuf, 0, sizeof(ybuf)); for(y=1; y<=2*k; y++){ double x = 1.0 / (1.0/k - 1.0/y); LL xInt = (LL)(x+0.5); // 经过确定精度,选用1e-4,过大或过小都不能AC if(x>0 && fabs(x-xInt)<1e-4){ //printf("x:%lf, xInt:%lld, y:%lld\n", x, xInt, y); xbuf[cnt] = xInt; ybuf[cnt] = y; cnt++; } } printout(k, cnt); } int main(){ #ifndef ONLINE_JUDGE freopen("10976.in", "r", stdin); freopen("10976.out", "w", stdout); #endif LL k; while(scanf("%lld",&k) != EOF){ play(k); } } #endif
相关推荐
Manhattan GMAT Math-Fractions, Decimals & Percents.pdf
Fractions Again
Fractions Again
Fractions Again2
Fractions Again2
"partial-fractions" 是一个专门为Java设计的库,它的主要功能是简化分数函数,便于开发者在程序中高效地处理复杂的分数计算。 部分分式分解(Partial Fraction Decomposition)是数学中的一个重要概念,它允许我们...
在这个背景下,“continued-fractions”是一个专门针对Haskell设计的库,它提供了处理和评估连续分数的功能。 连续分数通常表示为一个无限序列,形如: \[ a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3 +...
Java kata "fractions" 是一个练习项目,旨在帮助开发者通过测试驱动开发(TDD)来增强他们的编程技能,特别是对于Java语言的理解。这个项目聚焦于分数运算,这在数学和计算中是常见的概念,需要精确的算法来处理。...
【标题】"polar-fractions"项目是一个利用Calkin-Wilf序列在极坐标图上展示[0,1]区间内所有分数的JavaScript实现。这个创新的可视化方法可以帮助我们更好地理解有理数的分布,并以独特的视觉形式展现它们。 ...
在本项目"python-fractions-process"中,我们聚焦于使用Python编程语言处理分数(fractions)的一个过程。这个项目可能是一个网页应用或教程,它出现在作者的创客交易会网站上,旨在帮助访客理解如何在Python环境中...
" https://www.random.org/decimal-fractions/?num=1&dec=9&col=1&format=plain " ; Async .start(seq() { // concurrently request for 10 random numbers var numberTasks = Seq .range( 0 , 10 ) | > Seq ....
尼姆分数 Nim Fractions 库是一个用于有理数算术的简单库。 执照 Nim Fractions 根据 MIT 许可条款提供。 有关详细信息,请参阅许可证文件。 安装 $ nimble install fractions
《PyPI上的Python库——binary_fractions-1.0.2.tar.gz详解》 PyPI(Python Package Index)是Python开发者们分享和获取软件包的主要平台,它为全球的Python爱好者提供了丰富的开源资源。在PyPI上,我们可以找到...
Ruby级分 杰克·理查兹(Jack Richards)撰写 一个简单的程序,通过为每个枚举的有理数分配一个唯一的自然数作为标签来证明有理数是可数的。 理论/资料来源 程序的基本功能依赖于一系列函数,在所有自然数N到所有...
《Neverending Fractions: An Introduction to Continued Fractions》不仅系统地介绍了连分数的基础理论,而且还探讨了这一领域的最新进展。无论是对于专业研究人员还是对数学感兴趣的业余爱好者来说,本书都是一本...
问题:分数拆分(Fractions Again?!) 输入:一个正整数k 输出:所有的正整数x>=y,使得1/k=1/x+1/y 解决思路:由给出的式子和x>=y,可知,k,通过枚举y,求出满足式子的x即可。 代码如下: ```cpp #include #...
资源分类:Python库 所属语言:Python 资源全名:django_fractions-0.3.1-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
这本数学书里面有很多连分数公式 是一本好书This book is aimed at two kinds of readers: firstly, people working in or near mathematics, who are curious about continued fractions; and secondly, senior or ...