BestCoder Round #80 1002
2016-04-19 13:42
246 查看
HDU 5666 Segment
题意:给你条斜率为-1,常数项为q(q为质数)的直线,连接原点与直线上整数格点,问你在有多少个格点在形成的无数个三角形内,而不在线段上,结果对P取模。
思路:bestcoder题解上有思路,一条以(0,0)为起点,(x,y)为终点的线段上格点的个数(不包含端点时),一定是gcd(x,y)−1,题目由于p为质数,所以所有线段上都没有格点,需要注意的是p为质数,情况就很少了,然后就是数据太大的问题,改一改快速幂就可以了。
题意:给你条斜率为-1,常数项为q(q为质数)的直线,连接原点与直线上整数格点,问你在有多少个格点在形成的无数个三角形内,而不在线段上,结果对P取模。
思路:bestcoder题解上有思路,一条以(0,0)为起点,(x,y)为终点的线段上格点的个数(不包含端点时),一定是gcd(x,y)−1,题目由于p为质数,所以所有线段上都没有格点,需要注意的是p为质数,情况就很少了,然后就是数据太大的问题,改一改快速幂就可以了。
#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int maxn = 100005; long long p,q; long long sum; long long powf(long long a, long long b) { long long r = 0, base = a; while(b) { if(b&1) r = (r + base) % q; base = (base + base) % q; b >>= 1; } return r; } int main() { int t; cin >> t; while(t--){ cin >> p >> q; if(p&1) sum = powf(p/2, p-2); else sum = powf(p/2-1, p-1); cout << sum << endl; } return 0; }
相关文章推荐
- Chapter 2 User Authentication, Authorization, and Security(1):选择Windows和SQL 身份验证
- javaScript数据类型解析
- Pixhawk之UAV控制理论、ardupilot源码框架介绍
- C语言之字符串的表示方式
- Python相对导入导致SystemError的解决方案(译)
- Mariadb 10.1 joiner节点加入报错WSREP: Failed to prepare for incremental state transfer
- Python相对导入导致SystemError的解决方案(译)
- updateByPrimaryKey和updateByPrimaryKeySelective insert和insertSelective
- delegate和block的选择
- eclipse下package,source folder,folder
- Android studio 导入 Eclipse 代码的那些坑
- Oracle学习笔记(二十二)——块
- jenkins和hudson---打酱油的日子
- java Spring bean作用域
- ajax传输字符串
- 有关于缓存的 判断
- java学习笔记(三)
- flex布局
- FZU2216
- Paint及Canvas的简单应用