【无标题】

问题 G: n=a*a+2*a*b+b*b

内存限制:128 MB时间限制:1.000 S

评测方式:文本比较命题人:16699231585

提交:30解决:18

返回比赛提交提交记录露一手!

题目描述

给你一个正整数N,请找出满足如下条件的两个正整数(a,b)的所有表达式: 

a<= b

n=a*a+2*a*b+b*b

输入

一行一个整数 n。

输出

若干行每行一个表达式

样例输入 复制
16
样例输出 复制
16=1*1+2*1*3+3*3
16=2*2+2*2*2+2*2
提示

【数据范围】

1<=n<=1000

【思路】

乍一眼看,这个式子十分复杂

但这个式子可以化简

a*a+2*a*b+b*b=(a+b)^{2}

理由如下

(a+b)^{2}=a*(a+b)+b*(a+b)=a*a+a*b+b*a+b*b=a*a+2*a*b+b*b

所以

\sqrt{n}=a+b

就可以得出代码

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
	cin>>n;
	int a=sqrt(n);
	for(int i=1;i<=a/2;i++)
	{
		cout<<n<<"="<<i<<"*"<<i<<"+2*"<<i<<"*"<<a-i<<"+"<<a-i<<"*"<<a-i<<endl;
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值