博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5666 BestCoder Round #80
阅读量:6841 次
发布时间:2019-06-26

本文共 1788 字,大约阅读时间需要 5 分钟。

Segment

 
 Accepts: 418
 
 Submissions: 2020
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
\ \ \ \    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后的值.
输入样例
12 107
输出样例
0
官方解:

考虑一条以(0,0)(0,0)为起点,(x,y)(x,y)为终点的线段上格点的个数(不包含端点时),一定是gcd(x,y)-1gcd(x,y)1,这个很显然吧.

然后整个网格图范围内的格点数目是\frac {q*(q-1)} 22q(q1).

所以答案就是\frac {q*(q-1)} 2 -2q(q1) 所有线段上的格点的个数.

因为gcd(a,b)=gcd(a,b-a)\ (b>a)gcd(a,b)=gcd(a,ba) (b>a),所以gcd(x,y)=gcd(x,p-x)=gcd(x,p)gcd(x,y)=gcd(x,px)=gcd(x,p),p是质数,所以gcd(x,y)=1gcd(x,y)=1,所以线段上都没有格点,所以答案就是\frac {q*(q-1)} 22q(q1).

因为数据比较大,所以用的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--;    }    }}

  

 

转载于:https://www.cnblogs.com/Przz/p/5409568.html

你可能感兴趣的文章
我的友情链接
查看>>
Linux课程第六天学习笔记
查看>>
我的友情链接
查看>>
MyEclispe
查看>>
windows server 2008的安装以及主机IP配置实验
查看>>
自己搭建自动化巡检系统(五) 抖动告警
查看>>
我们该使用哪种分布式锁?
查看>>
Java Web 前端高性能优化(二)
查看>>
44.作用域,局部和全局变量
查看>>
find、sed、awk、grep命令总结
查看>>
winpcap
查看>>
shell脚本编写乘法口诀
查看>>
mysql 最大链接数 max_connections 设置
查看>>
【源资讯 第37期】一个时代的终结 —— 再见, Flash !
查看>>
阶段性总结(一)
查看>>
调试小技巧---利用调用堆栈
查看>>
mariadb安装和使用
查看>>
Nginx基础
查看>>
网络, Nginx
查看>>
渐进式框架
查看>>