BestCoder Round #80 1002
HDU 5666 Segment 
题意:给你条斜率为-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;
}
BestCoder Round #80 1002的更多相关文章
- 暴力+降复杂度 BestCoder Round #39 1002 Mutiple
		题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ... 
- 矩阵快速幂---BestCoder Round#8 1002
		当要求递推数列的第n项且n很大时,怎么快速求得第n项呢?可以用矩阵快速幂来加速计算.我们可以用矩阵来表示数列递推公式比如fibonacci数列 可以表示为 [f(n) f(n-1)] = [f(n ... 
- hdu 5667 BestCoder Round #80 矩阵快速幂
		Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ... 
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
		题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ... 
- Manacher BestCoder Round #49 ($) 1002 Three Palindromes
		题目传送门 /* Manacher:该算法能求最长回文串,思路时依据回文半径p数组找到第一个和第三个会文串,然后暴力枚举判断是否存在中间的回文串 另外,在原字符串没啥用时可以直接覆盖,省去一个数组空间 ... 
- 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil
		题目传送门 /* 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 每一次二分图匹配时,将点多的集合加大最后第一个集合去 注意:n <= 1,no,两 ... 
- hdu 5195 DZY Loves Topological Sorting  BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]
		传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131 ... 
- BestCoder Round #56 1002 Clarke and problem  1003 Clarke and puzzle (dp,二维bit或线段树)
		今天第二次做BC,不习惯hdu的oj,CE过2次... 1002 Clarke and problem 和Codeforces Round #319 (Div. 2) B Modulo Sum思路差不 ... 
- BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧
		题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ... 
随机推荐
- 2>&1
			经常关注linux脚本的人,一定看到过 2>&1 这样的用法,最初一定不明白其中的含义以及为什么是这样的一种组合.昨天偶然间再次看到了这个 2>&1 的写法,遂下决心搞明白 ... 
- No.23
			腓利比书3:19:"他们的结局就是沉沦,他们的神就是自己的肚腹,他们以自己的羞辱为荣耀,专以地上的事为念". 谨记! 
- shell 脚本中的运算
			#!/bin/bash read -p "please Insert two integer values: " a b if [ ! -n "$a" -o ! ... 
- 第二天--html
			<!DOCTYPE html><!--设置文档类型为标准的html5模型--><html> <head> <meta char ... 
- C语言 指针小结
			指针 -->指针变量 类型名 *变量名 int *point1; char *point2; 注意:*p可以直接使用,它代表指针p指向的变量,*p可以当做被指向的变量使用!~~~~ 一个变量的地 ... 
- javase-->多线程--线程池
			java的线程池理解 在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. ... 
- 第6章 Spring的事物处理
			一.简述事物处理 1.事物处理的基本概念 1)提交:所有操作步骤都被完整执行后,称该事物被提交 2)回滚:某步操作执行失败,所有操作都没被提交,则事物必须被回滚 2.事物处理的特性(ACID) 1)原 ... 
- Java面试常见知识点总结(三)
			21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ... 
- C++ 系列:C++ 基础 002
			Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ... 
- 用 Blend 给Windows Phone 应用创建 示例数据
			前言 创建 示例数据(Sample Data) 是提高程序开发效率的一个很有效方法,有了它,我们调UI的时候就不必每次都运行应用,然后在手机上观看页面效果了,配合 “AlignmentGrid.pn ... 
