![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
穆梓先生
人之为学有难易乎?学之则难者亦易矣,不学则易者亦难矣!
展开
-
快速幂
快速幂这个东西比较好理解,但实现起来到不老好办,记了几次老是忘,今天把它系统的总结一下防止忘记。 首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了好多好多。它的原理如下: 假设我们要求a^b,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例转载 2017-09-21 10:57:24 · 227 阅读 · 0 评论 -
爱看电视的LsF
1269: 爱看电视的LsF 时间限制: 1 秒 内存限制: 64 MB 提交: 312 解决: 77 提交 状态 题目描述LsF(刘师傅)非常喜欢看电视! 不幸的是,遥控器上的一些数字按钮坏了。 但他灵光一闪,如果他不能直接输入他想要看到的频道的号码,那么他可以先输入其他号码,再通过按下按钮+ 和- (这两个按钮由24K钛合金制成,永远不会坏)的方式到达所需的频道。 按钮+将数字增加1,按钮-将...转载 2018-04-04 21:17:17 · 127 阅读 · 0 评论 -
nyoj 543 遥控器
#include<stdio.h>#include<algorithm>using namespace std;int a[20];int solve(int st,int ed){ int ans=0x3f3f3f3f; if(a[11]) ans=min(ans,(ed-st+100)%100); if(a[12]) ans=min(ans,(st-e...转载 2018-04-04 21:15:30 · 161 阅读 · 0 评论 -
nyoj 找球号(三)
找球号(三)时间限制: 2000ms内存限制: 128000KB64位整型: Java 类名:上一题 提交 运行结果 统计 讨论版 下一题类型: 没有 没有 难度 lv.1 lv.2 lv.3 lv.4 lv.5 lv.6 lv.7 lv.8 lv.9 lv.10 搜索 数据结构 动态规划 STL练习...转载 2018-04-04 19:28:59 · 144 阅读 · 0 评论 -
NYOJ 318 斐波那契数列四吧
设一个方程x*f(1)+y*f(2)=f(20),方程的解x和y代表f(20)由x个f(1)和y个f(2)组成,我们看一下斐波拉契数列:1,1, 2, 3, 5,8,13,21,34......第18项2584,第19项4181,第20项6765 可知:f(20)=f(18)+f(19),也可以写为f(20)=2584*f(1)+4181*f(2),因为斐波那契数列的前两项都为1,所以它的第20...转载 2018-04-04 16:50:20 · 312 阅读 · 0 评论 -
nyoj 301 递推求值
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;const int maxn=100+5;const int mod=1000007;const int N=3;struct Mat{ LL m...转载 2018-04-04 16:23:51 · 150 阅读 · 0 评论 -
nyoj 排队
约瑟夫环在一间房间总共有n个人(下标0~n-1),只能有最后一个人活命。按照如下规则去杀人:所有人围成一圈顺时针报数,每次报到q的人将被杀掉被杀掉的人将从房间内被移走然后从被杀掉的下一个人重新报数,继续报q,再清除,直到剩余一人你要做的是:当你在这一群人之间时,你必须选择一个位置以使得你变成那剩余的最后一人,也就是活下来#include<stdio.h>#include<str...原创 2018-04-04 15:17:23 · 189 阅读 · 0 评论 -
nyoj 积木
求等效宽度,积木到左右两边比自己高,中间的距离即为等效宽度#include<iostream>using namespace std;struct block { int w, h; //宽度和高度 };int main() { //freopen("in.txt","r",stdin); int N = 0; cin >> N; block a[20];...转载 2018-04-04 14:47:57 · 274 阅读 · 0 评论 -
nyoj 无聊的小明
#include<stdio.h>#include<math.h>using namespace std;int main(){ int t; scanf("%d",&t); while(t--){ int n,k; scanf("%d%d",&n,&k); long long ans=n; k=pow(10,k); ...原创 2018-04-03 15:25:06 · 203 阅读 · 0 评论 -
nyoj 小明的存钱计划
1.记得加上剩余的零钱 2.四舍五入 float f; int i = (int)(f + 0.5); #include<stdio.h>using namespace std;int main(){ int t; scanf("%d",&t); while(t--){ int flag=0; double tol=0.0; int hand=0...原创 2018-04-03 15:08:14 · 229 阅读 · 0 评论 -
hdu 1576 A/B (扩展欧几里得)
思路 :来自 hdu 1576 A/B(扩展欧几里得) 设(A/B)%9973 = K,则A/B = k + 9973x(x未知),因此A = kB + 9973xB,又A%9973 = n,所以kB%9973 = n, 故kB = n + 9973y (y未知)故(k/n)B +(-y/n)*9973 = gcd(B,9973) = 1扩展欧几里得求出k/n,再乘以个n,记得取模,就是answe...转载 2018-04-02 20:41:36 · 157 阅读 · 0 评论 -
次方求模
次方求模时间限制:1000 ms | 内存限制:65535 KB难度:3描述求a的b次方对c取余的值 输入第一行输入一个整数n表示测试数据的组数(n每组测试只有一行,其中有三个正整数a,b,c(1=输出输出a的b次方对c取余之后的结果样例输入32 3 53 100 1011 12345 12345样例原创 2017-09-21 10:40:29 · 245 阅读 · 0 评论 -
最大的数
最大的数时间限制:1000 ms | 内存限制:65535 KB难度:3描述小明和小红在打赌说自己数学学的好,于是小花就给他们出题了,考考他们谁NB,题目是这样的给你N个数在这n个数之间添加N-1个*或+,使结果最大,但不可以打乱原顺序,请得出这个结果如1 3 5结果是(1+3)*5=20;最大可以添加若干个括号,但一定要保证配对,但是每转载 2017-09-27 18:01:37 · 264 阅读 · 0 评论 -
p次方求和
p次方求和时间限制:1000 ms | 内存限制:65535 KB难度:3描述一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。输入第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p,输入保证0输出输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。样例输入原创 2017-09-23 17:32:56 · 2110 阅读 · 0 评论 -
mdd的烦恼
mdd的烦恼时间限制:1000 ms | 内存限制:65535 KB难度:3描述今天mdd看到这么一段话:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。于是他想用计算机实现欧拉函数原创 2017-09-23 16:38:34 · 225 阅读 · 0 评论 -
快速矩阵幂
转自: 矩阵快速幂求斐波那契数列(初学整理)参考文章: http://blog.csdn.net/u013795055/article/details/38599321 http://blog.csdn.net/g_congratulation/article/details/52734306转载 2017-09-23 11:41:51 · 249 阅读 · 0 评论 -
星际之门(一)
星际之门(一)时间限制:3000 ms | 内存限制:65535 KB难度:3描述公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地。帝国皇帝认为这种发明很给力,决定用星际之门把自己统治的各个星系连结在一起。原创 2017-09-23 10:11:04 · 149 阅读 · 0 评论 -
hdu 1573 X问题
利用模板求出最小解,如果最小解大于n或者无最小解(此模板返回-1),则无解否则输出(n-ans)/dg+1(dg为a[i]的最小公倍数,ans为最小解),所有满足dg*i+ans的都符合要求,ans为最小的满足的数#include<stdio.h>using namespace std;#define ll long longll A[11],B[11];//B[i]为余数...转载 2018-04-06 16:56:22 · 201 阅读 · 0 评论