`
pengc825
  • 浏览: 8575 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

(暴力枚举)UVa10976FractionsAgain?!

题目:

输入一个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;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。By PengCoX ( Pengc825@foxmail.com )

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics