[BZOJ1041][HAOI2008]圆上的整点(数论)
来源:互联网 发布:王者荣耀知乎 编辑:程序博客网 时间:2024/06/09 23:19
为了考虑方便,把问题视为以下模型:
对于任意的
求
怎样求出这个必要条件呢?首先,把
思考
再看
当
否则有
从上面推出,
考虑枚举
1、必须要有
2、为避免重复,必须判断是否
代码:
#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int N = 1e4 + 5;int r, tot; ll Ans, a[N];ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a;}int main() { int i, d, S, j, cc = 0; cin >> r; S = sqrt(r); for (i = 1; i <= S; i++) if (r % i == 0) { a[++cc] = i; a[++cc] = 2ll * i; if (r / i != i) a[++cc] = r / i, a[++cc] = 2ll * (r / i); } sort(a + 1, a + cc + 1); tot = unique(a + 1, a + cc + 1) - a - 1; for (j = 1; j <= tot; j++) { d = a[j]; for (i = 1; 1ll * i * i * d <= r; i++) { int x = r - i * i * d; if (x <= 0 || x >= r) continue; if (gcd(1ll * r + x, 1ll * r - x) != d) continue; ll w = 1ll * r * r - 1ll * x * x; ll s = sqrt(w); if (s * s == w) Ans++; } } cout << (Ans + 1) * 4 << endl; return 0;}
阅读全文
1 0
- [BZOJ1041][HAOI2008]圆上的整点(数论)
- bzoj1041: [HAOI2008]圆上的整点(数论)
- 【数论乱搞】BZOJ1041 [HAOI2008]圆上的整点
- 【BZOJ1041】[HAOI2008]圆上的整点 数学
- [BZOJ1041]HAOI2008圆上的整点
- 【HAOI2008】【BZOJ1041】圆上的整点
- 【BZOJ1041】[HAOI2008]圆上的整点【数学】
- [BZOJ1041][HAOI2008]圆上的整点
- bzoj1041: [HAOI2008]圆上的整点
- [枚举] BZOJ1041: [HAOI2008]圆上的整点
- bzoj1041: [HAOI2008]圆上的整点
- bzoj1041[HAOI2008]圆上的整点
- [BZOJ1041] [HAOI2008]圆上的整点
- 【bzoj1041】[HAOI2008]圆上的整点
- bzoj1041 [HAOI2008]圆上的整点
- BZOJ1041 [HAOI2008]圆上的整点 【数学】
- bzoj1041: [HAOI2008]圆上的整点
- bzoj1041 [HAOI2008]圆上的整点 gcd
- Java多线程之自旋锁与队列锁
- 第十天总结
- 题目5:Binary String Matching
- What is REST
- windows环境搭建maven私服
- [BZOJ1041][HAOI2008]圆上的整点(数论)
- 解决Linux安装 VMware tools 工具的方法
- opentracing文档中文版
- 计算并输出一个三位整数的个位、十位和百位数字之和
- 第七周项目5-排队看病模拟
- codeforce_876B_B
- PHP代码审计实战之盾灵CMS
- Java内部类
- 详解apt、yum、dnf 和 pkg