hdu5666 BestCoder Round #80
Segment
\ \ \ \ Rivendell非常神,喜欢研究奇怪的问题. \ \ \ \ 今天他发现了一个有趣的问题.找到一条线段x+y=qx+y=q,令它和坐标轴在第一象限围成了一个三角形,然后画线连接了坐标原点和线段上坐标为整数的格点. \ \ \ \ 请你找一找有多少点在三角形的内部且不是线段上的点,并将这个个数对PP取模后告诉他.
\ \ \ \ 第一行一个数T,为测试数据组数.
\ \ \ \ 接下来每一行两个数qq,PP,意义如题目中所示.
\ \ \ \ q q是质数且q\le 10^{18},1\le P\le 10^{18},1\le T \le 10q≤1018,1≤P≤1018,1≤T≤10.
\ \ \ \ 对每组数据,输出点的个数模PP后的值.
1
2 107
0
考虑一条以(0,0)(0,0)为起点,(x,y)(x,y)为终点的线段上格点的个数(不包含端点时),一定是gcd(x,y)-1gcd(x,y)−1,这个很显然吧.
然后整个网格图范围内的格点数目是\frac
{q*(q-1)} 22q∗(q−1).
所以答案就是\frac
{q*(q-1)} 2 -2q∗(q−1)− 所有线段上的格点的个数.
因为gcd(a,b)=gcd(a,b-a)\
(b>a)gcd(a,b)=gcd(a,b−a) (b>a),所以gcd(x,y)=gcd(x,p-x)=gcd(x,p)gcd(x,y)=gcd(x,p−x)=gcd(x,p),p是质数,所以gcd(x,y)=1gcd(x,y)=1,所以线段上都没有格点,所以答案就是\frac
{q*(q-1)} 22q∗(q−1).
因为数据比较大,所以用的java.当然也可以考虑按位乘
import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner cin = new Scanner (new BufferedInputStream(System.in));
int T;
BigInteger c; BigInteger d;
T = cin.nextInt();
while(T > 0){
c = cin.nextBigInteger();
d = cin.nextBigInteger();
BigInteger a = c.subtract(BigInteger.valueOf(2));
if(a.equals(BigInteger.valueOf(0)))
{
System.out.println(0);
}
else{
c = a.add(BigInteger.valueOf(1));
//system.out.println(c);
a = c.multiply(a);
//System.out.println(a);
a = a.divide(BigInteger.valueOf(2));
a = a.remainder(d);
System.out.println(a);
}
T--;
}
}
}
hdu5666 BestCoder Round #80的更多相关文章
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- BestCoder Round #80 1002
HDU 5666 Segment 题意:给你条斜率为-1,常数项为q(q为质数)的直线,连接原点与直线上整数格点,问你在有多少个格点在形成的无数个三角形内,而不在线段上,结果对P取模. 思路:best ...
- Bestcoder Round# 80
[1003 Sequence] 指数循环节,注意a mod p = 0的情况.此时你的循环节如果返回0,这时你会输出1,而实际上应该是0 #include <algorithm> #inc ...
- BestCoder Round #80 待填坑
Lucky Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- hdoj5667 BestCoder Round #80 【费马小定理(膜拜)+矩阵快速幂+快速幂】
#include<cstdio> #include<string> #include<iostream> #include<vector> #inclu ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- hdu5634 BestCoder Round #73 (div.1)
Rikka with Phi Accepts: 5 Submissions: 66 Time Limit: 16000/8000 MS (Java/Others) Memory Limit: ...
- hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
随机推荐
- POST请求的提交
var http = require("http"); var querystring = require("querystring"); //创建服务器 va ...
- 洛谷 P3797 妖梦斩木棒
https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了 ...
- 洛谷P2894 [USACO08FEB]酒店Hotel
P2894 [USACO08FEB]酒店Hotel https://www.luogu.org/problem/show?pid=2894 题目描述 The cows are journeying n ...
- vue 保留两位小数 不能直接用toFixed(2) ?
用vue做项目的时候多多少少都会遇到这个问题 刚开始我是用toFixed()这个方法来写的 效果是有的 但是控制台一直是红红的围绕着我 突然想到 vue和jquery混搭 的 问题 于是乎 看了一下 ...
- lua保存table到文件并从文件解析成table
require("json") result = { ["ip"]="192.168.0.177", ["date"]= ...
- 在Vim按了ctrl+s后
在windows我们码代码的时候习惯ctrl+s保存: 但在vim中使用ctrl+s之后终端就没反应了... vim: ctrl+s终止屏幕输出,敲的东西都有效,就是看不见. ctrl+q恢复:
- 使用 dynamic 类型让 ASP.NET Core 实现 HATEOAS 结构的 RESTtful API
上一篇写的是使用静态基类方法的实现步骤: http://www.cnblogs.com/cgzl/p/8726805.html 使用dynamic (ExpandoObject)的好处就是可以动态组 ...
- Redux应用单一的store原则案例详解
在开发reac单页面应用的时候,页面的展示逻辑跟数据状态的关系管理变得越来越复杂,redux很好的解决这个问题.废话不多说,直接先上官网api链接. http://cn.redux.js.org/in ...
- MicrosoftWebInfrastructure 之坑
从svn下载下来的项目,还原提示缺少MicrosoftWebInfrastructure 包 网上大多数解决方法 PM> Install-Package Microsoft.Web.Inf ...
- mysql(2)—— 由笛卡尔积现象分析数据库表的连接
首先,先简单解释一下笛卡尔积. 现在,我们有两个集合A和B. A = {0,1} B = {2,3,4} 集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式: A×B = {(0,2 ...