• hdu5666 BestCoder Round #80


    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是质数且qle 10^{18},1le Ple 10^{18},1le T le 10q1018,1P1018,1T10.
    输出描述
           对每组数据,输出点的个数模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(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--;
        }
        }
    }
    

      





  • 相关阅读:
    写写我的这几天,损失惨重
    ArcIMS9.0安装指南图解
    《亲爱的界面,让用户乐于使用、爱不释手》小编推介
    从图灵原创谈起,带你走进国产技术书的时代
    【民间图灵奖】读《图灵的秘密》写读后感获图灵水杯
    2012年的这些经典书目你读了没?
    2012年图灵技术图书大盘点
    就让推荐,系统实践起来吧!
    用编程工具实现数据可视化的几个选择
    你未必知道的CSS故事:揭开leading的面纱
  • 原文地址:https://www.cnblogs.com/Przz/p/5409568.html
Copyright © 2020-2023  润新知