题目:http://acm.hdu.edu.cn/showproblem.php?pid=3113


题意:给出一个正整数n,范围是[1,1000000],求出满足方程的一组整数解,要求x最小。


分析:这个方程与平方和不同的是,加号两边的任意一个可以为负数,所以直接枚举然后Hash就显得不好做了。那么我用一种

比较有效的方式解决。


我们知道,那么我们这样来做,首先把n的所有因子找出来,枚举所有的因子。


假设当前的因子为,那么令,即得到:




在这里其实还有一种情况就是:




你会发现这种情况根本没有解,所以不予考虑。


对上面的方程组消去y,我们得到: ,那么得到:




那么我们就只需要在枚举因子的过程中,判断是否为完全平方数和,并且记录最

小的x以及对应的y。


#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <math.h>using namespace std;
const int N = 1000005;
const int INF = 1 << 30;
const int M = 1005;bool prime[N];
int p[N];
int pri[M],num[M];
int arr[M];
int k,cnt,ct;void isprime()
{k = 0;memset(prime,true,sizeof(prime));for(int i=2;i<N;i++){if(prime[i]){p[k++] = i;for(int j=i+i;j<N;j+=i)prime[j] = false;}}
}void Divide(int n)
{cnt = 0;int t = (int)sqrt(1.0*n);for(int i=0;p[i]<=t;i++){if(n%p[i]==0){int a = 0;pri[cnt] = p[i];while(n%p[i]==0){n /= p[i];a++;}num[cnt] = a;cnt++;}}if(n > 1){pri[cnt] = n;num[cnt] = 1;cnt++;}
}void dfs(int dept,int product = 1)
{if(dept == cnt){arr[ct++] = product;return;}for(int i=0;i<=num[dept];i++){dfs(dept+1,product);product *= pri[dept];}
}void Work(int n)
{ct = 0;Divide(n);dfs(0,1);sort(arr,arr+ct);int ctt = 0;int ansx = INF;int ansy = INF;int tmpx = 0;int tmpy = 0;for(int i=0;i<ct;i++){int t = n / arr[i] * 12 - 3 * arr[i] * arr[i];if(t >= 0){int tmp = (int)sqrt(t * 1.0);if(tmp * tmp == t){if((3*arr[i] - tmp)%6==0){ctt++;tmpx = (3*arr[i] - tmp) / 6;if(tmpx < ansx){ansx = tmpx;ansy = arr[i] - tmpx;}}if((3*arr[i] + tmp)%6==0){ctt++;tmpx = (3*arr[i] + tmp) / 6;if(tmpx < ansx){ansx = tmpx;ansy = arr[i] - tmpx;}}}}}if(ctt == 0) puts("Impossible");else printf("%d %d\n",ansx,ansy);
}int main()
{int n;isprime();while(~scanf("%d",&n)){if(n == 0) break;Work(n);}return 0;
}


HDU3113(工科数学分析之分解)相关推荐

  1. 工科数学分析无穷级数总结

    目录 序言 一.常数项级数 概念 1. 什么是常数项无穷级数? 2. 级数的收敛性与和 两个特别的级数 级数的判别方法 ①常数项级数判别法 ②正项级数的审敛准则 ③变号级数的审敛准则 ④绝对收敛 二. ...

  2. POJ3244(工科数学分析)

    题目:http://poj.org/problem?id=3244 题意:给定n个三元组,对于任意两个三元组,设和,定义: ,求所有无序对的和. 分析:首先我们要知道: 简单分析一下这个结果是怎么得来 ...

  3. 工科数学分析 MA_12 Vectors and the Geometry of Space (上篇)

    MA_12.1 12.2 12.3 12.1 Three Dimensional Coordinate Coordinate System Equation of a Sphere(球面方程) 12. ...

  4. 工科数学分析学习笔记

    教材:工科数学分析 编者:孙兵 毛京中 第一章 函数.极限与连续 第一节 函数 自然定义域:使得算式有意义的一切实数组成的集合 N(a,δ)N(a,\delta)N(a,δ) 称为点aaa的δ\del ...

  5. 数学分析笔记-菲赫金哥尔茨-第一卷-绪论

    标签(空格分隔): 微积分 数学分析笔记-菲赫金哥尔茨-第一卷-绪论 1.有理数域 1.前言. 有理数结构p/q(p,q均为自然数). 没有这样的有理数p/q,其平方能等于2.证明略过 研究数学问题, ...

  6. 数学分析笔记-菲赫金哥尔茨-第一卷-极限论

    标签(空格分隔): 微积分 数学分析笔记-菲赫金哥尔茨-第一卷-极限论 1.整序变量及其极限 22.变量.整序变量. 整序变量的定义(序列,估计数列,级数-也行). 整序变量的给定(给定通项公式,或者 ...

  7. 【STUDY】工程数学

    目录 第一章 线性空间与线性变换 第二章 内积空间 第三章 jz的标准型 第四章 范数理论 第五章 矩阵函数 [PPT] [] ans  | 笔记1 | 基础笔记2 | 知识点+例题 √ | 整理 | ...

  8. 《人工智能本科专业知识体系与课程设置》笔记

    今天看到一本书<人工智能本科专业知识体系与课程设置>,清华大学出版社出版的,由西安交大的老师们编写的,感觉里面的内容设置对于非人工智能科班出身的同学们会有一定帮助,能够了解自己哪些地方还有 ...

  9. 【转载】知乎答案----孙志岗----Google 发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐...

    国内公司在复制国外商业模式的同时,也应复制人家的社会担当.所以,来答题了!就参考 Google 的框架,列一下中文的课程.大体上在线学完一个计算机专业,是基本不成问题的.但是,这不意味着你可以不上大学 ...

最新文章

  1. web 小程序 ch3 小程序框架
  2. Scala里的控制台输出print实现原理
  3. python csv模块追加列,使用Python在CSV上添加新列
  4. 计算机系统结构安全检测,信息安全体系结构安全测评实验报告.doc
  5. node mysql登录注册_Node数据库入门(登录注册功能)
  6. 基于海思IVE实现绊线/区域入侵的基本算法流程
  7. 学习Linux必备的硬件基础一网打尽
  8. PostgreSQL之Foreign Data Wrappers使用指南
  9. 泛微oa java 源码_FineReport和泛微OA(Ecology)的单点登录集成方案
  10. 输入是一个只包含拼音的字符串,请输出对应的数字序列。
  11. Excel工作表保护在哪里撤销?
  12. YOLOV3训练环境的搭建
  13. ipv4和计算机地址是什么意思,ipv6是什么意思?我们怎么查看电脑iPv6地址
  14. linux ls -lrt 命令是什么意思
  15. 智能建造-钢结构数字应用(附全文PPT)
  16. Microsoft Edge浏览器上不了网,其他浏览器可以
  17. android报错:Only the original thread that created a view hierarchy can touch its views.
  18. 2022春招第一波投递时间预测,早看早知道
  19. 深度学习入门笔记(李沐)(一)
  20. STM32实现德飞莱LED滚动效果

热门文章

  1. 静态代理和动态的本质区别
  2. SpringMVC的请求-获得请求参数-获得POJO类型参数
  3. flume案例-flume级联-组件分析
  4. mysql 光标的作用_Mysql那些事儿之(十四)光标的使用_MySQL
  5. 200818C链表的查询插入删除
  6. 【SpringBoot零基础案例05】【IEDA 2021.1】若SpringBoot项目两种配置文件同时存在,哪种文件配置起作用?
  7. SpringMVC+Spring+mybatis项目搭建详细过程
  8. 查看CentOS版本方法
  9. SIMD学习 -- 用SSE2指令作点乘和累加计算
  10. 《从零开始系列-Project 2010视频教程 (102课时)》 教你进行有效的项目管理