首页 > 代码库 > 分数拆分
分数拆分
#include<iostream> #include<stdio.h> using namespace std; int main() { int N; cin>>N; while(N--) { int k,m,n; cin>>k; for(m=k+1;m<=2*k;m++) { if(k*m%(m-k)==0) { n=k*m/(m-k); printf("1/%d=1/%d+1/%d \n",k,n,m); } } } }
数学分析。1) 我们假设 m <= n ,因为 k 必然小于 m 和 n ,则有 k < m <= n 2) 1/k=1/m+1/n 转换为 n 的等式,为 n = km/(m-k)3) k 为输入,是已知数。我们要枚举 m 来获得 n 。 因为 k < m <= n ,也就是 k < m <= km/(m-k) ,解得 k < m <= 2k 。4) 因此我们程序要做的就是: 枚举 m 的值为 [k+1,2k] 的一个【整数】,n = km/(m-k) 看是否能得到【整数解 n】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。