HDU 6211 Pythagoras (预处理, 2017 ACM/ICPC Asia Regional Qingdao Online)
来源:互联网 发布:端口号的目的是 编辑:程序博客网 时间:2024/06/05 02:52
Problem
Given a list of integers
Idea
首先,刨除对 (x, y, z)
满足 gcd(x, y) = gcd(x, z) = gcd(y, z) = gcd(x, y, z) = 1
且 (x, y, z)
满足
在求本原勾股数已有成熟
同时所有本原勾股数可以构成一个完整的三叉树形式
它们分别通过矩阵
得到。 详见 Tree of primitive Pythagorean triples
由于在
总共产生的本原勾股数组数在
之后的本题具体内容的处理不做具体说明(最难的问题已经解决了)。
Code
#include<bits/stdc++.h>using namespace std;const int LMT = 1e9;long long cnt = 0;const int N = 1<<17;const int MOD = N - 1;int dig[N], a[N], T, k;void solve(long long a, long long b, long long c){ if(c > LMT) return; dig[ max(a, b)&MOD ] ++; long long aa = a<<1; long long bb = b<<1; long long cc = c<<1; solve(a-bb+cc, aa-b+cc, aa-bb+cc+c); //solve(a-(b<<1)+(c<<1), (a<<1)-b+(c<<1), (a<<1)-(b<<1)+(c<<1)+c); solve(a+bb+cc, aa+b+cc, aa+bb+cc+c); //solve(a+(b<<1)+(c<<1), (a<<1)+b+(c<<1), (a<<1)+(b<<1)+(c<<1)+c); solve(bb+cc-a, b+cc-aa, bb+cc+c-aa); //solve(-a+(b<<1)+(c<<1), -(a<<1)+b+(c<<1), -(a<<1)+(b<<1)+(c<<1)+c);}int main(){ solve(3, 4, 5); scanf("%d", &T); while(T-- && scanf("%d", &k)!=EOF) { int mod = (1<<k); for(int i=0;i<mod;i++) scanf("%d", &a[i]); long long ans = 0; for(int i=0, j=0;i<N;i++,j++) { if(j == mod) j = 0; ans += dig[i] * a[j]; } printf("%lld\n", ans); }}
阅读全文
0 0
- HDU 6211 Pythagoras (预处理, 2017 ACM/ICPC Asia Regional Qingdao Online)
- HDu 6216 && 2017 ACM/ICPC Asia Regional Qingdao Online 1011
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1001-Apple
- HDU-2017 ACM/ICPC Asia Regional Qingdao Online-补题
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online 1011(数学知识)
- 2017 ACM/ICPC Asia Regional Qingdao Online 1007 hdu 6212 Zuma (区间dp)
- HDU 5879 Cure 2016 ACM/ICPC Asia Regional Qingdao Online
- HDU 5884 Sort 2016 ACM/ICPC Asia Regional Qingdao Online
- HDU 5878 -- 丑数打表(2016 ACM/ICPC Asia Regional Qingdao Online)
- HDU 5878 -- 丑数打表(2016 ACM/ICPC Asia Regional Qingdao Online)
- 【2016 ACM/ICPC Asia Regional Qingdao Online】
- 2016 ACM/ICPC Asia Regional Qingdao Online
- 2016 ACM/ICPC Asia Regional Qingdao Online
- 2017 ACM/ICPC Asia Regional Qingdao Online--Chinese Zodiac
- 如何在Android5.1系统上实现RecyclerView高度自适应
- servlet验证码
- 鼠标选择图像上点或者闭合多边形
- 转载反射机制
- 从零开始前端学习[9]:css中的背景样式background的使用
- HDU 6211 Pythagoras (预处理, 2017 ACM/ICPC Asia Regional Qingdao Online)
- 美团笔试题 钱币组合问题
- LeetCode 39. Combination Sum
- java打印五星图形,字符串数组
- September English summary
- Docker中安装Centos6
- HTTP Status 404-no result defined for action com.huida.action.LinkManAction and result input
- 【Java】——list中快速进行数据筛选
- 读书笔记-《Java NIO》:第二章 缓冲区(1)