===数论===
yhf_2015
无。。。
展开
-
【bzoj 1008】 越狱
...原创 2016-08-26 17:52:58 · 449 阅读 · 0 评论 -
【学习】线筛求积性函数与线性预处理逆元
线性筛法可以在O(n)的时间复杂度下计算出nn以内的质数。for(int i = 2; i <= n; i ++){ if(!is[i]){ prime[++pcnt] = i; } for(int j = 1; i*prime[j] <= n; j ++){ is[i*prime[j]] = 1; if(i%prim原创 2017-01-30 23:55:18 · 574 阅读 · 0 评论 -
【学习】容斥原理与莫比乌斯反演
容斥原理:把判断一个东西的有无变成计算一个式子。公式:[n==0]=∑i=0n(−1)iCin[n==0]=\sum_{i=0}^{n}(-1)^iC_{n}^{i}证明:用生成函数,有若干个个物品,考虑每一个选还是不选,假如说选择nn个,可以得到:(x−1)n(x-1)^n。 其中当x=1x=1的时候选择该物品,显然可以得到[n==1]=(x−1)n[n==1]=(x-1)原创 2017-01-29 00:01:08 · 1001 阅读 · 0 评论 -
【BZOJ 2190】[SDOI2008]仪仗队
题目来源:BZOJ 2190思路:假设方阵是一个二维的坐标系的第一象限,那么从(1,1)(1,1)开始算起,能被观察到的点(x,y)(x,y)一定满足性质gcd(x,y)=1gcd(x,y)=1。这很显然,否则(x/gcd,y/gcd)(x/gcd,y/gcd)这个点一定会挡住点(x,y)(x,y),所以根据这个性质来看,要求的就是从2→n2\to n的欧拉函数的和了。代码:#include <cs原创 2016-12-10 14:43:10 · 292 阅读 · 0 评论 -
【hdu 2035】 人见人爱A^B
思路快速幂的题,每次对1000取模就好了。代码#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;const ll p = 1000;ll a, b;ll pow(ll a, ll b){ ll ans = 1; for(; b; b原创 2016-10-27 21:28:13 · 222 阅读 · 0 评论 -
【洛谷 1088】 火星人
思路C++教做人系列,就是求全排列,用康托展开和康托逆展开,但是C++有STL。代码#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int a1[10010], n, m;int main(){ scanf("%d%d", &n, &m);原创 2016-10-27 17:04:58 · 428 阅读 · 0 评论 -
【洛谷 2118】 比例化简
思路先求出大的和小的之间的比例关系,然后枚举倍数,找到LL以内误差最小的输出,注意特判比例本来就大于LL的情况,这时候为了减少误差只能选择1:L1:L或L:1L:1。代码#include <bits/stdc++.h>using namespace std;int main(){ double a, b, eps = 1e9; int ans = 0, num = 0, ok =原创 2016-10-26 10:28:31 · 1338 阅读 · 0 评论 -
【洛谷 1604】 B进制星球
思路进制转换,先用字符串读入,全部转到数组里面(倒着读),数组直接加,然后转进制。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char map[40], a1[2100], a2[2100];int map1[300];int cnt = -1;int b1[2010], b2原创 2016-10-25 14:14:29 · 398 阅读 · 0 评论 -
【洛谷 1255】 数楼梯
思路不难发现答案就是斐波那契数列,要用到高精度。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int p = 10000;struct _int{ int num[1000], len; _int(){memset(num,0,原创 2016-10-25 11:25:30 · 337 阅读 · 0 评论 -
【洛谷 1045】 麦森数
思路首先是输出位数,设位数是ww,不难得到:w=log102n+1=n×log102+1w=\log_{10}2^n+1=n\times \log_{10}2+1,所以可以直接计算。 然后是输出前500位,那就要暴力高精度了,用上快速幂,跑的不算慢。代码#include <cmath>#include <cstdio>#include <iostream>#include <cstring>原创 2016-10-24 23:43:28 · 209 阅读 · 0 评论 -
【poj 3070】 Fibonacci
题意:输入n,求斐波那契数列的第n项。思路:求斐波那契数列的矩阵已经给出,用矩阵快速幂做就好了。代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const ll p = 10000;ll n;struct node{ ll a[4]原创 2016-10-18 15:43:26 · 201 阅读 · 0 评论 -
【poj 2262】 Goldbach's Conjecture
题意:让你验证哥德巴赫猜想,即:任意一个大于2的偶数可以拆成两个质数的和。思路:用筛法筛出来素数,枚举验证即可。代码:#include <iostream>#include <cstdio>using namespace std;typedef long long ll;const int maxn = 5000010;ll prime[maxn], cnt, n;bool is[max原创 2016-10-18 15:14:31 · 267 阅读 · 0 评论 -
【洛谷 1013】 进制位
思路我直接暴力枚举可能的值,每一位计算,然而洛谷的数据是错的。。。 其实好有更好的做法,在一个加法表里,字母出现的次数是多少,减一就是对应的值,只算出现一次的。代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char a1[15][15][15]原创 2016-10-23 20:22:58 · 385 阅读 · 0 评论 -
【vijos 1029】晴天小猪历险记之Number
额,用的暴力,康托展开都没写,暴力hash水过。#include using namespace std;typedef long long ll;const int mod = 1999183;bool map1[mod];struct node{ int num, step;};bool ok;int ch[15];int b1[20] = {0,2,2,2,4原创 2016-09-23 07:35:50 · 727 阅读 · 0 评论 -
【CF 125D】 Two progressions 划分等差数列
翻译:有一个整数序列a[],你需要将它划分成两个非空序列,满足两个序列都是等差数列。"等差数列"定义为相邻两项间差值相等的非空序列;特别地,长度为1或2的序列也是等差数列,但长度为0的不是(因为必须非空)。"划分"定义为,将原序列中的所有元素分成两个序列,满足每个元素都在恰好一个序列中,且保留其在原序列中的顺序。例如[1, 3, 4]和[2, 5]就是[1, 2, 3, 4, 5]的一个划分,[1原创 2016-09-23 00:59:27 · 584 阅读 · 0 评论 -
【CF 125C】 Hobbits' Party
翻译: 小L要举办一场派对,他有n个朋友可以邀请来参加。派对会持续若干天,为了保证每个人都能玩得开心,小L希望,对于这若干天中的任意两天,都存在某个人参加了这两天的派对;而为了保证朋友们不会觉得他偏心,对于任意三天,都不存在某个人参加了所有这三天的派对。求小L最多能举办多少天派对。 3 输入格式:一行,一个正整数n。输出格式:第一行输出一个整数k,表示派对最多能举行的天数。接下来k行,第i原创 2016-09-21 21:20:06 · 505 阅读 · 0 评论 -
【洛谷 1483】 序列变换
要考虑完全平方数的情况,注意因子的取值关系。#include using namespace std;long long a1[1000010], d[1000010];int n, m;int main(){ scanf("%d%d", &n, &m); for(int i = 1; i <= n; i ++) scanf("%lld", &a1[i]原创 2016-09-20 07:34:10 · 396 阅读 · 0 评论 -
【BZOJ 1257】[CQOI2007]余数之和sum
题意给出正整数nn和kk,计算j(n,k)=kmod1+kmod2+kmod3+…+kmodnj(n, k)=k \mod 1 + k \mod 2 + k \mod 3 + … + k \mod n的值,其中kmodik mod i表示kk除以ii的余数。 1≤n,k≤1091\le n ,k\le 10^9思路ans=∑i=1nk%i=∑i=1nk−⌊ki⌋×i=nk−∑i=1n原创 2017-03-30 14:49:54 · 326 阅读 · 0 评论