优化:4数平方和之积转换为2数平方之和
来源:互联网 发布:淘宝1块包邮的有什么 编辑:程序博客网 时间:2024/06/05 14:45
遇到一道题,描述是这样的:
给定四个整数(可正可负)a,b,c,d。其中,a,b一组,c,d一组,以下面的方式计算得到一个值:
X = (a*a+b*b)*(c*c+d*d)
要求出另外的能组成X的两个整数e,f,满足以下条件:
e*e+f*f = X
另外,要求e,f 中至少有一个必须是 |a*c+b*d| 和 |a*c-b*d| 中的数。
最后返回成对的(e,f)
以上。
我的算法是这样的:
#include <vector>#include <iostream>using namespace std;class SqProd2Sum{public: static std::vector<std::pair <long, long>> prod2Sum(long long a, long long b, long long c, long long d);};std::vector<pair<long, long> > SqProd2Sum::prod2Sum(long long a, long long b, long long c, long long d){std::vector<pair<long, long> > lvec;long long temp = (a*a+b*b)*(c*c+d*d);long long left=a*c-b*d;if(left<0) left=-left;long long right=a*c+b*d;if(right<0) right=-right;for(long i=0;i*i<=temp/2;i++){ long iSq=i*i; for(long j=0;j*j<=temp-iSq;j++){ long jSq=j*j; if(left==i || i==right ){ if((temp-iSq)==jSq) lvec.push_back(make_pair(i,j)); } else if(left == j || j==right){ if((temp-iSq)==jSq) lvec.push_back(make_pair(i,j)); } }}return lvec;}
这次想把它放在网上作为记录,希望自己以后能有解决方法。小生之前没研究过算法优化这部分,如果有前辈知道优化方案,敬请告知。
以上。
阅读全文
0 0
- 优化:4数平方和之积转换为2数平方之和
- Lintcode697-判断是否为平方数之和
- 判断是否为平方数之和-LintCode
- Python实现大自然数分解为最多4个平方数之和(1)
- 【算法】将正整数表示为平方数之和
- 【算法】将正整数表示为平方数之和
- 判断某整数是否为两数平方之和
- LintCode第697题目:判断是否为平方数之和
- 求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
- [C]求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
- 两数之和,两数之积
- Java 求整数各位数平方之和
- 计算2的平方和3的平方阶乘之和
- 判断是否为平方数
- 算法爱好者——判断某整数是否为两数平方之和 ? 待解决
- 判断一个数是否为平方数
- 判断一个数是否为平方数
- python 求8位各不相同的整数,1357位之和等于2468位之和,且为完全平方数
- NOIP2017提高组 模拟赛 27(总结)
- Jfilter统一编码工具类
- 33. Search in Rotated Sorted Array && 81. Search in Rotated Sorted Array II
- MVC框架
- Building Blocks
- 优化:4数平方和之积转换为2数平方之和
- Number Complement(leetcode)
- 邮件发送工具类
- 几种简单的文本数据预处理方法
- 基于Threejs的web 3D开发入门
- 二叉树的前序,中序,后序遍历
- js框架封装(二)——选择器框架
- 你用过java.text.DecimalFormat吗?
- c语言字符串排序问题