数论
背着代码的蜗牛
这个作者很懒,什么都没留下…
展开
-
2k进制数
2k进制数设r是个2k进制数,并满足以下条件: (1)r至少是个2位的2k进制数。 (2)作为2k进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。 (3)将r转换为2进制数q后,则q的总位数不超过w。 在这里,正整数k(1≤k≤9)和w(k< W< span>≤30000)是事先给定的。 问:满足上述条件的不同的r共有多少个? 我们再从另一角度作些解释:设S是长度为w 的01原创 2016-08-15 21:31:09 · 1463 阅读 · 0 评论 -
np问题(大数阶乘取模)
np问题题目描述: LYK 喜欢研究一些比较困难的问题,比如 np 问题。 这次它又遇到一个棘手的 np 问题。问题是这个样子的:有两个数 n 和 p,求 n 的阶乘对 p 取模后的结果。 LYK 觉得所有 np 问题都是没有多项式复杂度的算法的,所以它打算求助即将要参加 noip的你,帮帮 LYK 吧! 输入格式(np.in): 输入一行两个整数 n,p。 输出格式(np.out):原创 2016-11-06 15:14:05 · 7894 阅读 · 0 评论 -
看程序写结果
看程序写结果题目描述: LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在练习。 这次它拿到这样的一个程序: C++: scanf(“%d”,&n); for (i=1; i<=n; i++) scanf(“%d”,&a[i]); for (i=1; i<=n; i++) for (j=1; j<=n; j++) for (k=1; k<=n;原创 2016-11-06 16:29:03 · 815 阅读 · 0 评论 -
巧克力棒
巧克力棒题目描述: LYK 找到了一根巧克力棒,但是这根巧克力棒太长了, LYK 无法一口吞进去。 具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后慢慢享用。 它打算每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则LYK 觉得它完成了一件非常困难的事,并会得到 1 点成就感。 LYK 想知道一根长度为 n 的巧克力棒原创 2016-11-06 17:59:25 · 1730 阅读 · 0 评论 -
二叉树计数2(卡特兰数+高精乘低精+高精除低精)
二叉树计数2题目描述: 一个有n个结点的二叉树总共有多少种形态 输入描述: 读入一个正整数n 输出描述: 输出一个正整数表示答案 样例输入: 5 样例输出: 42 数据范围及提示: 1<=n<=100#include<iostream>using namespace std;const int maxn=10010;int n,len,f[maxn];void mul(原创 2016-10-16 14:37:45 · 365 阅读 · 0 评论 -
寻找最大质因数(质因数分解+剪枝)
寻找最大质因数题目描述: 给出N个数字,试求质因数最大的数字。 输入描述: 第一行,一个整数N,表示数字个数。 接下来N行,每行一个整数ai,表示给出的数字。 输出描述: 一个整数,表示质因数最大的数字。(如果有多个最大相同,则输出最后输入那一个) 样例输入: 4 35 60 40 42 样例输出: 42 数据范围及提示: N≤10^6,2≤ai≤10^6 用cin原创 2016-10-16 16:03:32 · 4191 阅读 · 0 评论 -
车(唯一分解定理+高精度乘以单精度)
车题目描述: 众所周知,车是中国象棋中最厉害的一子之一,它能吃到同一行或同一列 中的其他棋车。车跟车显然不能在一起打起来,于是rly一天又借来了许多许多的车在棋盘上摆了起来……他想知道,在N×M的矩形方格中摆最多个数的车使其互不吃到的情况下方案数有几种。但是,由于上次摆炮摆得实在太累,他为了偷懒,打算增加一个条件:对于任何一个车A,如果有其他一个车B在它的上方(车B行号小于车A),那么车A必须在原创 2016-11-07 14:11:48 · 640 阅读 · 0 评论 -
解方程
解方程来源: noip Day2 T3 输入描述: 输入共n+2行。 第一行包含2个整数n、m,每两个整数之间用一个空格隔开。 接下来的n+1行每行包含一个整数,依次为a0,a1,a2,……,an。 输出描述: 第一行输出方程在[1, m]内的整数解的个数。 接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m]内的一个整数解。 样例输入: 样例输入1: 2 10原创 2016-11-08 11:25:06 · 393 阅读 · 0 评论 -
Fibonacci数列(矩阵乘法快速幂)
题目描述: 定义:f0=f1=1, fn=fn-1+fn-2(n>=2)。{fi}称为Fibonacci数列。 输入n,求fn mod q。其中1<=q<=30000。 输入描述: 第一行一个数T(1<=T<=10000)。 以下T行,每行两个数,n,q(n<=109, 1<=q<=30000) 输出描述: 文件包含T行,每行对应一个答案。 样例输入: 3 6 2 7 3 7原创 2016-10-07 17:06:07 · 737 阅读 · 0 评论 -
解的个数(扩展欧几里得解不定方程)
解的个数题目描述: 已知整数x,y满足如下面的条件: ax+by+c = 0 p<=x<=q r<=y<=s 求满足这些条件的x,y的个数。 输入描述: 第一行有一个整数n(n<=10),表示有n个任务。n<=10 以下有n行,每行有7个整数,分别为:a,b,c,p,q,r,s。均不超过108。 输出描述: 共n行,第i行是第i个任务的解的个数。 样例输入: 2 2 3 -原创 2016-11-12 19:34:02 · 1603 阅读 · 0 评论 -
最大公约数和最小公倍数问题
最大公约数和最小公倍数问题题目描述: 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式: 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个原创 2016-11-12 20:11:05 · 625 阅读 · 0 评论 -
数列(矩阵乘法+快速幂)
数列题目描述: a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值。 输入描述: 第一行一个整数T,表示询问个数。 以下T行,每行一个正整数n。 输出描述: 每行输出一个非负整数表示答案 样例输入: 3 6 8 10 样例输出: 4 9 19 数据范围及提示: 对于3原创 2016-11-12 21:49:22 · 527 阅读 · 0 评论 -
欧几里得算法与扩展欧几里得算法模板
#include<iostream>#include<cstdio>using namespace std;int a,b,x,y;int gcd(int a,int b){ if(a%b==0) return b; return gcd(b,a%b);}int ex_gcd(int a,int b,int &x,int &y){ if(b==0)原创 2016-11-07 22:06:46 · 334 阅读 · 0 评论 -
传球(概率问题)
传球问题描述: N个人坐成一圈, 其中第K个人拿着一个球。 每次每个人会以一定的概率向 左边的人和右边的人传球。 当所有人都拿到过球之后, 最后一个拿到球的人即为胜者。 求第N个人获胜的概率。( 所有人按照编号逆时针坐成一圈) 输入格式: 第一行一个数T代表数据组数。 对于每组数据, 第一行两个整数N, K如题意所述。 接下来每行一个实数p代表该人将球传给右边的人的概率。 输出格式:原创 2016-11-06 14:30:06 · 1643 阅读 · 0 评论 -
火柴排队(树状数组求逆序对)
火柴排队来源: 2013年NOIP全国联赛提高组 题目描述: 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为: ,其中 ai表示第一列火柴中第 i 个火柴的高度,bi表示第二列火柴中第 i 个火柴的高度。 每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这原创 2016-08-19 16:30:05 · 1313 阅读 · 2 评论 -
树状数组求逆序对模板
#include<iostream>#include<algorithm>using namespace std;const int maxn=100010;struct node{ int num; int id; bool operator < (node x) const { if(num==x.num) return原创 2016-09-07 21:48:08 · 570 阅读 · 0 评论 -
矩阵乘法
矩阵乘法题目描述: 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容。 当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的。小明希望你来帮他完成这个任务。 现在给你一个ai行aj列的矩阵和一个bi行bj列的矩阵,要你求出他们相乘的积(当然也是矩阵)。 (输入数据保证aj=bi,不需要判断) 矩阵乘法的定义: 1. 矩阵A乘以B的时原创 2016-08-05 07:39:18 · 636 阅读 · 0 评论 -
细胞分裂
细胞分裂来源: 2009年NOIP全国联赛普及组 题目描述: Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 Hanks 博士手里现在有N 种细胞,编号从1~N,一个第i 种细胞经过1 秒钟可以分裂为Si 个同种细胞(Si 为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再原创 2016-09-10 20:27:28 · 1305 阅读 · 0 评论 -
质因数分解(唯一分解定理)
质因数分解题目描述: (多数据)给出t个数,求出它的质因子个数。 数据没坑,难度降低。 输入描述 Input Description 第一行 t 之后t行 数据 输出描述: t行 分解后结果(质因子个数) 样例输入: 2 11 6 样例输出: 1 2 数据范围及提示: (样例解释)11自己本身是一个质数,所以计入其中。 提示:t<=100000。思路: 唯一分解定原创 2016-09-11 08:02:53 · 4280 阅读 · 0 评论 -
阶乘质因子分解(唯一分解定理)
阶乘质因子分解题目描述: 对N!进行质因子分解。 输入输出格式: 输入格式: 输入数据仅有一行包含一个正整数N,N<=10000。 输出格式: 输出数据包含若干行,每行两个正整数p,a,中间用一个空格隔开。表示N!包含a个质因子p,要求按p的值从小到大输出。 输入输出样例 输入样例#1: 10 输出样例#1: 2 8 3 4 5 2 7 1 说明 10!=362880原创 2016-09-11 08:35:44 · 3499 阅读 · 0 评论 -
Tr A(矩阵乘法快速幂)
Tr AProblem Description: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。 Input: 数据的第一行是一个T,表示有T组数据。 每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。 Output: 对应原创 2016-08-11 15:02:09 · 626 阅读 · 0 评论 -
求乘方取模(快速幂+慢速乘法模板)
求乘方取模题目描述 Description 给定非负整数A、B、M,求(A ^ B) mod M。 输入描述 Input Description 包含多组输入,输入处理到EOF。 每组输入仅一行,三个用空格隔开的非负整数A、B、M。 输出描述 Output Description 对于每组输入,输出一行,一个非负整数,即(A ^ B) mod M。 样例输入 Sample Input原创 2016-08-23 20:21:29 · 1274 阅读 · 0 评论 -
旅游电车(tarjan算法+统计出度)
旅游电车问题描述: Henryy国正致力于首都的一个旅游电车建设工程。首都有N个旅游景区。Henryy国的电车永远只沿道路规定的方向行驶,为了不使投入使用的电车有可能无法回到它的起始站,Henryy希望知道他的首都的可以在哪些景区设置站点。一个景区可以被设置成车站,当且仅当对于任意一个从该景区出发所能到达的景区,均至少有一条路可回到该景区。你的同事已完成了一份景区之间的道路连通情况的报告。报告中将原创 2016-09-04 15:32:07 · 511 阅读 · 0 评论 -
仪仗队(欧拉函数)
仪仗队来源: 2008年省队选拔赛山东 题目描述: 作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。 现在,C君希望你告诉他队伍整齐时能看到的学生人数。 输入描述: 共一个数N。 输出描述: 共一个数,即C君应看到的原创 2016-08-25 20:18:10 · 359 阅读 · 0 评论 -
树屋阶梯(卡特兰数+高精除低精+高精乘低精)
树屋阶梯来源: 安徽省选 2012 题目描述: 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题。由于地上露营湿气重,必须选择在高处的树屋露营。小龙分配的树屋建立在一颗高度为 N+1 尺(N 为正整数)的大树上,正当他发愁怎么爬上去的时候,发现旁边堆满了一些空心四方钢材,经过观察和测量,这些钢材截面的宽和高大小不一,但都是 1 尺的整数倍,原创 2016-09-18 17:00:26 · 870 阅读 · 0 评论 -
栈(卡特兰数模板)
栈题目背景: 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。 题目描述: 宁宁考虑的是这样一个问题:一个操作数序列原创 2016-09-25 15:15:31 · 931 阅读 · 0 评论 -
花(唯一分解定理+排列组合+快速幂)
花问题描述: 商店里出售n种不同品种的花。为了装饰桌面,你打算买m支花回家。你觉得放两支一样的花很难看,因此每种品种的花最多买1支。求总共有几种不同的买花的方案?答案可能很大,输出答案mod p的值。 输入格式: 一行3个整数n,m,p,意义如题所述。 输出格式: 一个整数,表示买花的方案数。 输入输出样例1: 输入: 4 2 5 输出: 1 输入输出样例1说明 用数字1,2原创 2016-10-12 20:44:53 · 692 阅读 · 0 评论 -
完全平方数最大
问题描述: 从1 − N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数 最大可能是多少。 输入格式: 第一行一个数字N。 输出格式: 一行一个整数代表答案对100000007取模之后的答案。 样例输入: 7 样例输出: 144 样例解释: 但是塔外面有东西。 数据规模与约定: 对于20%的数据, 1 ≤ N ≤ 100。 对于50%的数据, 1 ≤ N ≤原创 2016-11-06 08:48:14 · 1734 阅读 · 2 评论 -
欧拉函数模板
在数论,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。 #include<iostream>#include<cstdio>#define lon long longusing namespace std;int n,ans;int main(){ scanf("%lld",&n);ans=n; for(int i=2;i*i<=n;i++) if(原创 2016-11-07 15:15:24 · 329 阅读 · 0 评论