ZZNU 1988: Sn

题目描述

给你两个数 n, p(0 < n,p <= 10^15);

a1 = 1;

a2 = 1+2;

a3 = 1+2+3;

...

an = 1+2+3+...+n

Sn = a1+a2+a3+...+an;

求(6*Sn) % p;

输入

输入一个数 T表示有T组实例;

每组样例输入两个整数 n , p

输出

输出结果;

样例输入
2
1 1234567
2 1234567

样例输出
6
24

题目链接:http://acm.zznu.edu.cn/problem.php?id=1988

*********************************************

分析:公式n*(n+1)*(n+2)%p;

两个 long long 的数直接相乘会爆long long,所以两两相乘。

AC代码:

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include<limits.h>
 6 #include <cmath>
 7 #include <cstdlib>
 8 #include <stack>
 9 #include <vector>
10 #include <queue>
11 #include <map>
12
13 using namespace std;
14
15 #define N 2000000
16 #define INF 0x3f3f3f3f
17 #define met(a, b) memset (a, b, sizeof (a))////  met (dist, -1);
18 #define LL long long
19
20 LL q(LL a,LL b,LL p)
21 {
22    if(b==0)
23     return 0;
24
25    LL ans=2*q(a,b/2,p)%p;
26
27    if(b%2)
28     ans=(ans+a)%p;
29    return ans;
30 }
31 int main()
32 {
33     int T;
34     LL n,p;
35
36     scanf("%d", &T);
37
38     while(T--)
39     {
40        scanf("%lld %lld", &n,&p);
41
42        LL ans=q(n+1,n,p);
43        ans=q(ans,n+2,p);
44        printf("%lld\n", ans);
45     }
46     return 0;
47 }
48 ///公式n*(n+1)*(n+2)%p;
49 ///两个 long long 的数直接相乘会爆long long;所以两两相乘
时间: 2024-08-29 21:33:42

ZZNU 1988: Sn的相关文章

VMWareWorkstation 10 11 12 SN 序列号整理

注册码: VMWareWorkstation 10 SN 4F207-8HJ1M-WZCP8-000N0-92Q6G0A6Z5-8H1EJ-WZCL1-PK072-23DJG0F0Q9-8F38L-RZXT9-4U054-ACW5FJA02E-09H47-QZD81-W3A52-A30144F2AG-A0HEJ-JZWH8-L01N6-8C3Q3 VMWareWorkstation 11 SN1F04Z-6D111-7Z029-AV0Q4-3AEH8VMWareWorkstation 12 SN

[POJ 1988] Cube Stacking (带值的并查集)

题目链接:http://poj.org/problem?id=1988 题目大意:给你N个方块,编号从1到N,有两种操作,第一种是M(x,y),意思是将x所在的堆放到y所在的堆上面. 第二种是C(x),意思是数x方块下面有多少个方块. 把两堆合成一堆,这个可以用并查集来实现,问题是,怎么样维护x方块下面有多少个方块呢? 先来分析一下题目,按照样例,我们有6个方块,1,2,3,4,5,6. 令Cnt(x) = C(x)+1. 先执行M(1,6),此时Cnt(1) = 2, Cnt(6) = 1 再

HDU 1988 &amp; ZOJ 2991 Flipping Burned Pancakes(数学啊+模拟)

题目链接: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=1988 ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1990 Problem Description The cook at the Frobbozz Magic Pancake House sometimes falls asleep on the job while cooking pancakes. As

VMware-Fusion-7.0.0-2103067 Pro SN:序列号+ 百度云下载地址

VMware-Fusion-7.0.0-2103067Pro SN: 5CQE9-H5PY3-04ND5-4Z6EW-3QGDE JZCNC-2H9X9-44TD9-Y0X5W-2KGP5 8ZNTC-T55QW-H4H0Z-G8QX1-GZNM5 DY3NT-VC2P9-M4TZF-VR17E-VUXX9 AA4R9-F89MC-H4J4H-RZ15N-0CND3 5G19L-13E7E-H4MWT-54DGP-5LQZ1 1VWJV-540AV-H4HNR-HW2QK-DYZ23 TAWWT

POJ 1988 Cube Stacking (种类并查集)

题目地址:POJ 1988 这道题的查找合并的方法都能想的到,就是一点没想到,我一直天真的以为查询的时候,输入后能马上输出,这样的话在合并的时候就要所有的结点值都要算出来,但是经过路径压缩之后,没办法全部都处理到,如果不压缩妥妥的TLE..于是看了看网上的题解.才发现自己是多么的天真(ben,四声)..在查询的时候只要找一次跟就可以了..这样不需查询的也就没必要处理出来.反而更省时. 这题的基本思路是很好想的.另开两个数组,一个记录以此节点为根的子节点的数目(这样合并的时候只需要加另一个根的数目

POJ 1988 Cube Stacking

Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 18820   Accepted: 6530 Case Time Limit: 1000MS Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start w

POJ 1988 Cube Stacking (带权并查集)

题目链接:http://poj.org/problem?id=1988 有n个元素,开始每个元素自己 一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈.第二种操作是询问含有x元素下面有多少个元素. 经典的带权并查集,cnt表示包含这个元素的集合中所有元素个数,dis表示这个元素离最上面元素的个数(距离). 看代码领会一下吧. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio>

广搜 迷宫(zznu 1962)

http://acm.zznu.edu.cn/problem.php?id=1962 题目描述 在很多 RPG (Role-playing Games) 游戏中,迷宫往往是非常复杂的游戏环节.通常来说,我们在走迷宫的时候都需要花非常多的时间来尝试不同的路径.但如果有了算法和计算机的帮助,我们能不能有更快的方式来解决这个问题?我们可以进行一些尝试. 现在我们有一个 N 行 M 列的迷宫.迷宫的每个格子如果是空地则可以站人,如果是障碍则不行.在一个格子上,我们可以一步移动到它相邻的 8 个空地上,但

查看服务器型号、SN、Raid等信息

一.查看服务器型号 安装dmidecode yum install dmidecode 1.查看服务器型号.SN信息 # dmidecode -t 1 # dmidecode 2.11 SMBIOS 2.7 present. Handle 0x0024, DMI type 1, 27 bytes System Information Manufacturer: IBM Product Name: IBM System x3650 M4: -[79159NZ]- Version: 0C Seria