• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

分数拆分

#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】

posted on 2017-05-13 14:04  cynchanpin  阅读(196)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3