您的位置:首页 > 大数据 > 人工智能

(暴力枚举) UVa 10976 Fractions Again?!

2015-08-06 11:11 621 查看


(暴力枚举) UVa 10976 Fractions Again?!


题目:

输入一个k,让你求得所有的满足 1/k = 1/x + 1/y 的情况,并且打印出来 。


分析:

这是一道简单暴力枚举的题目。

枚举对象: y (x可以根据k和y直接得出)

枚举范围: [ k + 1 , 2 * k ]

判断条件: 之前的想法是 ( int ) ( 1.0 / ( 1.0 / k - 1.0 / y ) ) == ( 1.0 / ( 1.0 / k - 1.0 / y ) ) // 当x为整数的时候满足条件,打印出来 。

后来想想这种精确度的东西肯定会出问题,所以还是不用这个了。

模拟分数之间的减法 当 ( k * y ) % ( y - k ) == 0 // 同样是说明了x的分子为1,即x为整数 。


实现代码:

#include <iostream>

using namespace std;

int xHub[10010];
int yHub[10010];

int main( int argc, char const *argv[] ) {
int k;
while ( cin >> k ) {
int maxn = k << 1;
int count = 0;
for (int y = k + 1; y <= maxn; y++) {
if ( (k * y ) % ( y - k ) == 0 ) {
xHub[count] = (k * y ) / ( y - k );
yHub[count++] = y;
}
}
cout << count << endl;
for ( int i = 0; i < count; ++i ) {
cout << "1/" << k << " = 1/" << xHub[i] << " + 1/" << yHub[i] << endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: