题目链接
题意:给出n,k,以及n个正数,把n个数放在一个集合里,进行k次操作,每次操作取最大的数和次大的数放进集合。问k次操作结束后,集合中所有数的和。
思路:假设初始时刻,次大和最大分别为a0,a1,那么得到的就是一个类斐波那契数列。初始为a0,a1,fn = fn-1 + fn
题目链接
题意:Step 1: Calculate a new NN matrix C = AB. Step 2: Calculate M = C^(N*N). Step 3: For each element x in M, calculate x % 6. All the remainders form a new matrix M’. Step 4: Calculate the sum of all the elements in M’.
思路: 水题。。就一个trick…
题意:给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值
思路: ** 把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,CA的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,我们只需要快速幂求出A^k即可。**
题目链接
题意:给出p, q, e, l,令n = p * q, fn = (p-1) * (q-1)
给出l个c,计算m = D(c) = c**d** mod n,其中m为要输入的明文对应的ascii编码,d的计算方法:> calculate d, making d × e mod F(n) = 1 mod F(n), and d will be the private key。
acdreamer_逆元学习笔记
摘重点:
ksm(a,mod-2)的方法求逆元只适用于mod为质数且 gcd(a,mod)==1
扩展欧几里得算法求逆元只适用于gcd(a,mod)==1
扩展欧几里得算法求逆元
acdreamer的博客里提到一种通用的方法,正确性未知。(然而有b|a的前提呵呵呵呵呵)
题目链接
题意:
Given a n × n matrix A and a positive integer k, find the sum S = A + _A_2 + _A_3 + … + Ak.
思路: 对k进行二分。
比如,当k=6时,有: A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3) 应用这个式子后,规模k减小了一半。我们二分求出A^3后再递归地计算A + A^2 + A^3,即可得到原问题的答案。
题目链接
题意:求f[n] % 10000,f为斐波那契数。
思路:按照题目给出的公式,或者按照加速线性递推式的方法都可以。。。
因为把模数的1E4手滑写成1E4+7结果调了半天也是没谁了呵呵呵呵。
找到了篇四年前空间中的旧文,也是有点感动2333.
快速求解多项递推式 # 问题描述:
已知 F(n) = AF(n-1) + BF(n-2) + CF(n-3)+…..
题目链接
题意:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。
思路:先用扩展欧几里得算法(excrt)解一般同余方程求出一个特解R,然后通解R’ = R + k * LCM(a1..am)
题目链接
题意:给出k个方程,形式为 x==r1,求最小的正数x,无解输出-1.
思路:首先很容易让人联想到crt.
然而crt的使用条件是,所有的m(也就是这道题中的a)两两互质,这道题并不满足,因此不能使用crt.
题目链接:
**题意:**人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一
天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日
题目链接
题意:给出a,b,d,分别表示a,b两种刻度的砝码,以及要称量的物体重量为d.现在保证能称量出给定重量的物体,问两种砝码个数的和最小的时候,两种砝码分别有多少。如果有多组解,那么要求weight of(ax + by) 最小。
题目链接
题意: 问 循环for ( int i = a ; i !=b; i+=c)在% (2^k)的意义下循环了多少次。
思路:
一般的思路是:
列方程…
化成扩展欧几里得算法的形式。。。
根据裴蜀定理判断解是否存在…
题目链接
题意:两只青蛙初始在数轴的x,y点,单位时间内分别可以向右跳m米和n米,数轴是环型的,长度为L,问两只青蛙能否相遇,以及相遇时跳的次数。
思路:相遇就是同一时间在同一地点。
题目链接
题意:问ax+by=1的一组x>0的解,如果无解输出sorry.
思路:根据裴蜀定理, ax+by=1有解当且gcd(a,b)=1。
然后根据扩展欧几里得算法,我们可以得到一组x,y。需要注意的是,这只是其中一组解。
前置技能点:
维基百科_裴蜀定理(贝祖等式)
对任何整数\( a \) , \( b \) 和它们的最大公约数\( d \) ,关于未知数\( x \) 和\( y \) 的线性丢番图方程(称为裴蜀等式):\( ax+by=m \)
有整数解时当且仅当_m_是_d_的倍数。裴蜀等式有解时必然有无穷多个整数解,每组解\( x \) 、\( y \) 都称为裴蜀数,可用扩展欧几里得算法求得。
特别地,方程 \( ax+by=1 \) 有整数解当且仅当整数_a_和_b_互素。(kk:因为1(m=1)只可能是1(d=1)的倍数,也就是说gcd(a,b)=1,即a,b互质)
先放资料。
前置技能点: # 剩余系
剩余系**:设模为m,则根据余数可将所有的整数分成m类,分别记成[0],[1],[2],…[m-1]****,**
其实 东西之前出现过…不过好像重启一下服务器就可以了?
这次比较麻烦。
一开始我是直接 google 了这条错误信息,结果答案五花八门,或者说…可能的原因非常多。
题目链接
题意:给一个仅由小写字母组成的字符串,然后m个操作,每个操作一个区间,要求把区间中排列成字典序最小的回文串,如果不能形成回文串,就忽略该操作。
思路:和上一道线段树优化计数排序的题目很像,几乎是一样的。