Beijing 2008 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total Submission(s): 741    Accepted Submission(s): 291 Problem Description As we all know, the next Olympic Games will be held in Beijing in 2008. So the…
模乘(解决乘法取模爆long long) 二进制思想,变乘法为多次加法,具体思想跟着代码手算一遍就理解了,挺简单的 ll qmul(ll a,ll b,ll m) { ll ans=0; while(b){ if(b&1) ans=(ans+a)%m; a=(a+a)%m; b=b>>1; } return ans; } //快速幂中的ans*a和a*a可能会爆LL,使用模乘解决 ll qpow(ll a,ll b,ll m) { ll ans=1; while(b){ if(b&am…
就是以那个ai为分水岭,左边和右边都分别是单调增或单调减如图         就这四种情况,其中头两种总共就是两个序列,也就是从头到尾递增和从头到尾递减.         后两种方式就是把序列中德数分为左右两派,分完以后左右两边各自内部的排法就已经确定了,至于ai早就确定了(不是全局最大就是全局最小),而除了ai的每一个数都有选择在左或是在右两种选择,所以是2^(n-1),总共就是2^n,而这里包括了前两种的方案,所以要-4,最终应有2^n-2种.         看数据范围就知道要用快速幂,不…
求n^n的个位 Sample Input 2 3 4 Sample Output 7 6 直接快速幂了,注意要用long long #include<cstdio> long long quick_mod(long long a,long long b,long long m) { ; while (b) { ) { ans = (ans * a) % m; b--; } b/=; a = a * a% m; } return ans; } int main() { int t,n; scan…
---恢复内容开始--- 题目链接: https://vjudge.net/problem/1812693/origin 这题的mod运算很恶心,真的... 本题有正反两个思路,一个是正面求解其不能成立的情况, 一个是反面求解,用total减. 我用的是正面求解. 一共有种情况: 1. 全是球 :poww(2, a)*poww(2,c)-1 2. 全是拍 : poww(2, a)*poww(2, b)-1 3. 一拍多球(2种可能):    1 -- (poww(2, a)*poww(2, c)…
本原串 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1091    Accepted Submission(s): 350 Problem Description 由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?答案mod2008.例如,100100不是本原…
小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹.这不,班里唯一的女生又拿一道数学题来请教小明,小明当然很高兴的就接受了.不过等他仔细读题以后,发现自己也不会做,这下小明囧了:如果回复说自己不懂,岂不是很没面子? 所以,他现在私下求你帮忙解决这道题目,题目是这样的: 给你n个数字,分别是a1,a2,a3,a4,a5--an,这些数字每过一个单位时间就会改变,假设上一个单位时间的数字为a1',a2',a3'-…
#include<iostream> using namespace std; long long quick(long long a,long long b,int c) { ; a=a%c; ) { ) ans=(ans*a)%c; b>>=; a=(a*a)%c; } return ans; } int main() { long long a,b; while(cin>>a>>b) { cout<<quick(a,b,)<<e…
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4549: 题目是中文的很容易理解吧.可一开始我把题目看错了,这毛病哈哈. 一开始我看错题时,就用了一个快速幂来解,不用说肯定wa,看题目的通过率也不高,我想会不会有啥坑啊.然而我就是那大坑,哈哈. 不说了,直接说题吧,先讨论k=1,2,3;时的解.这应该会解吧,不多说了: 从第四项开始f(4)=a^1+b^2;f(5)=a^2+b^3;f(6)=a^3+b^5......; 看出来了吧,a上的指数成斐波…
关于快速幂这个算法,已经不想多说,很早也就会了这个算法,但是原来一直靠着模板云里雾里的,最近重新学习,发现忽视了一个重要的问题,就是若取模的数大于int型,即若为__int64的时候应该怎么办,这样就得用到乘法快速幂+乘方快速幂了. 快速幂一般是为了解决乘方取模问题的,显然思想就是二分,下面贴上快速幂模板: __int64 mulpow(__int64 a,__int64 p,__int64 m) { __int64 ans = ; while(p) { ) ans = ans * a % m;…