hdoj 5675 ztr loves math 【数学】
2016-05-01 12:17
302 查看
题目链接:hdoj 5675 ztr loves math
ztr loves math
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 201 Accepted Submission(s): 97
Problem Description
ztr loves research Math.One day,He thought about the “Lower Edition” of triangle equation set.Such as n=x2−y2.
He wanted to know that ,for a given number n,is there a positive integer solutions?
Input
There are T test cases.
The first line of input contains an positive integer T(T<=106) indicating the number of test cases.
For each test case:each line contains a positive integer ,n<=1018.
Output
If there be a positive integer solutions,print True,else print False
Sample Input
4
6
25
81
105
Sample Output
False
True
True
True
Hint
For the fourth case,105=132−82
题意:问你n = x^2 - y^2有没有正整数解。
思路:显然就是两个完全平方数之间的距离,临近的距离为3、5、7、9…,可以连续相加,发现只有偶数可以分成两个不同的奇数(大于1)和也是合法的。
AC代码:
ztr loves math
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 201 Accepted Submission(s): 97
Problem Description
ztr loves research Math.One day,He thought about the “Lower Edition” of triangle equation set.Such as n=x2−y2.
He wanted to know that ,for a given number n,is there a positive integer solutions?
Input
There are T test cases.
The first line of input contains an positive integer T(T<=106) indicating the number of test cases.
For each test case:each line contains a positive integer ,n<=1018.
Output
If there be a positive integer solutions,print True,else print False
Sample Input
4
6
25
81
105
Sample Output
False
True
True
True
Hint
For the fourth case,105=132−82
题意:问你n = x^2 - y^2有没有正整数解。
思路:显然就是两个完全平方数之间的距离,临近的距离为3、5、7、9…,可以连续相加,发现只有偶数可以分成两个不同的奇数(大于1)和也是合法的。
AC代码:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #define CLR(a, b) memset(a, (b), sizeof(a)) using namespace std; typedef long long LL; const int MAXN = 5*1e6 +10; const int INF = 0x3f3f3f3f; int main() { int t; scanf("%d", &t); while(t--) { __int64 n; scanf("%I64d", &n); if(n == 1LL) { printf("False\n"); } else if(n & 1LL) { printf("True\n"); } else if((n / 2 - 1) & 1 && (n / 2 - 1) >= 3) { printf("True\n"); } else { printf("False\n"); } } return 0; }
相关文章推荐
- hdoj 1025 Constructing Roads In JGShining's Kingdom 【LIS】
- 基础篇_包(package)
- HTML的本地数据库报错
- C#开发的进化史
- std::ref 有什么用
- PowerShell调用WMI
- redis安装
- 20145120 《Java程序设计》第9周学习总结
- Android Studio 2.+使用分享——关于未签名Apk第一次运行黑屏or白屏
- Python lambda表达式
- 2016年4月14日--4月30日(12小时,剩3009小时)
- nginx安装配置
- 一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
- 地理定位跟踪
- 常见的命令行操作
- C++ ofstream和ifstream详细用法
- Java-Write Once,Run Anywhere
- Bootstrap进度条组件知识详解
- Eclipse 安装Properties Editor插件
- 线性代数(笔记三) MIT公开课(来源网易云课堂)