这题给定一个N,求最小的x^2满足y^2 = x^2 + N;

将x^2移到左边,得到(y+x)*(y-x) = N,于是我们分解N成两个约数相乘的形式,于是我们从sqrt(N)到1开始枚举约数,得到可以相除的约数对(a, b)后,直接计算abs((a-b) / 2)就是x的值了,当然x不能为零,并且a,b的奇偶性要一致。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<cstring>
#include<vector>
#include<string>
#define LL long long
using namespace std;int N;int main()
{int T, ret;scanf("%d", &T);while (T--) {scanf("%d", &N);ret = -1;int LIM = (int)sqrt(double(N));for (int i = LIM; i >= 1; --i) {if (N % i == 0) {if ((i & 1) ^ ((N/i) & 1)) {continue;}else if (i - N/i){ret = abs((i - N/i) / 2);break;}}}printf("%d\n", ret);}return 0;
}

HDU-4145 A Simple Problem 简单数论相关推荐

  1. hdu 4143 A Simple Problem 数论

    y^2 = n +x^2 这道题目我做了一个小时多小时,你说累不累. 首先两个 平方数之间的差距 1^2   2^2 3^2  4^2 5 ^2 之间的 差距是  3 5 7 9  所以 只要是  奇 ...

  2. HDU 4267 A Simple Problem with Integers

    方法参考http://blog.csdn.net/acm_cxlove/article/details/7854526 题目:给出n个数,每次将一段区间内满足(i-l)%k==0 (r>=i&g ...

  3. HDOJ(HDU) 2123 An easy problem(简单题...)

    Problem Description In this problem you need to make a multiply table of N * N ,just like the sample ...

  4. HDU 4267 A Simple Problem with Integers [树状数组]

    根据%k=a中a和k的不同组合建立55棵树状数组,每次修改操作只对其中1棵树状数组进行操作,每次查询对其中10棵树状数组统计增量和. 1 #include <string.h> 2 #in ...

  5. HDU 2552 A simple problem

    题意: Zty很痴迷数学问题..一天,yifenfei出了个数学题想难倒他,让他回答1 / n.但Zty却回答不了^_^. 请大家编程帮助他. 输出1/n. (是循环小数的,只输出第一个循环节). 分 ...

  6. HDU 3651 A Simple Problem

    HDU_3651 首先可以把1~0映射成0~9,这样更好处理一些.接着我们可以用f[d][x][y]表示已经输入了d个数.左手指在x.右手指在y这种情况所需要的最少秒数,一开始d[0][4][5]=0 ...

  7. 【线段树】【模板】讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值)

    [线段树][模板]讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值) ...

  8. HDOJ 5373 The shortest problem 【数论】

    HDOJ 5373 The shortest problem [数论] 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5373 题目给一个初始数据和重复 ...

  9. hdu 1003 A + B Problem II 使用整型数组轻松实现大数求和

    为题如下: Problem Description I have a very simple problem for you. Given two integers A and B, your job ...

最新文章

  1. 基于相交线的立体平面SLAM
  2. mysql所有表查询
  3. 为恶意文件“画像” 瀚思科技基于深度学习技术快速锁定未知威胁
  4. 形容计算机老师风采的句子,关于老师的句子
  5. 对ContentProvider中getType方法的一点理解
  6. Linux内存管理和分析vmalloc使用的地址范围
  7. 前后端分离使用 Token 登录解决方案
  8. 使用ObjectDataSource 显示数据
  9. GDI+简单现实文字旋转
  10. python基础教程3下载-Python基础教程第3版中国PDF电子书免费下载
  11. java debug try catch 打印发生错误的代码的详细信息 代码行数
  12. 一文带你浏览Graph Transformers
  13. 解决Ubuntu18.04和Win10双系统系统时间不对的问题
  14. myeclipse误删文件恢复
  15. PHP 万能查询代码
  16. 恒生电子实习记录-7
  17. 用户记忆设计:如何设计印象深刻的用户体验 | Viget
  18. robosense 16线激光雷达标定
  19. 张蕾:物联网与三魂七魄
  20. jdbc读取mysql数据库_Ecplise 中利用 JDBC 连接 Mysql 数据库读取数据

热门文章

  1. openstack上创建vm实例后,状态为ERROR问题解决
  2. 无法从Windows上的资产index.android.bundle加载脚本
  3. 这个Javascript“要求”是什么?
  4. 在一行中捕获多个异常(块除外)
  5. 在PostgreSQL中创建数据库的副本
  6. SlideSwitch仿iphone滑动开关组件,仿百度魔图滑动开关组件Android
  7. Android配置http请求
  8. 代码查看工具_不好用打我 | 六个前端开发在线工具推荐
  9. 如何用c++画图_画图教室 | 绘制Mapping第一步:美团搜索火锅串串香...认真的!...
  10. 电脑有没有蓝牙_手机蓝牙没什么用?那是因为你不会用!这9种用法,你用过几种?...