例题 7-3 分数拆分(Fraction Again?!,Uva 10976)

代码转载自:https://github.com/aoapc-book/aoapc-bac2nd/blob/master/ch7/UVa10976.cpp

题目

Uva原题传送门

首先

哇,看了作者的源码我才终于懂了咋写。。。
我竟然没想到有y的具体范围了,还知道了k,那不就就可以直接求x了
我竟然还想枚举x
我竟然还根据输入的最大值给x定了个上限1e9。。。
我竟然还不知道判断分数是否为整数,直接判断能否整除就行了
我竟然想把那些输出先sprintf()保存到字符数组里,保存x、y的值不就好了
我竟然…
好了,没了,哈哈哈哈哈哈哈哈哈哈,太年轻啊,加油啊,学

代码(自己模仿着手敲了一遍)

#include <iostream>
#include <cstdio>
#include <vector> 

using namespace std;

int main() {
	int k;
	vector <int> X,Y;
	while (cin >> k && k) {
		int count = 0;
		for (int y = k+1; y <= 2*k; y++) {
			if (k*y % (y-k) == 0) {	//判断x是否为整数,即能否整除 
				count++;
				X.push_back(k*y / (y-k));
				Y.push_back(y); 
			}
		}
		cout << count << endl;
		for (int i = 0; i < X.size(); i++) {
			printf("1/%d = 1/%d + 1/%d\n", k, X[i], Y[i]);
		}	
		X.clear();
		Y.clear();		
	}
	return 0;
}
发布了41 篇原创文章 · 获赞 2 · 访问量 1641

猜你喜欢

转载自blog.csdn.net/qq_44296342/article/details/105019222
7-3