NOIp 数学 (小学奥数)
Basic knowledge
\]
快速幂
// Pure Quickpow
inline int qpow(int n, int m, int mod) {
ll tot = 1;
for (ll k = n; m; k = k * k % mod, m >>= 1)
if (m & 1) tot = tot * k % mod;
return tot;
}
/* Matrix Quickpow
* Au: H15teve
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod 1000000007
ll n, p;
struct matrix {
ll m[100][100];
matrix operator * (matrix &a) {
matrix b;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
b.m[i][j] = 0;
for (int k = 0; k < n; k++)
b.m[i][j] = (b.m[i][j] + m[i][k] * a.m[k][j]) \% mod;
}
return b;
}
} start;
matrix mpow(matrix a, ll k) {
if (k == 1) return a;
a = mpow(a, k / 2);
if (k \% 2) return (a * a) * start;
else return a * a;
}
int main() {
n = readll(), p = readll();
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
start.m[i][j] = readll();
matrix a = mpow(start, p);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
writellb(a.m[i][j]);
writeln();
}
return 0;
}
乘法逆元
/* 费马小定理求乘法逆元
* Au: Menci
*/
inline int qpow(int n, int m, int mod) {
ll tot = 1;
for (ll k = n; m; k = k * k % mod, m >>= 1)
if (m & 1) tot = tot * k % mod;
return tot;
}
inline int inv(int x, int mod) {
return qpow(x, mod - 2);
}
/* 扩展欧几里得求乘法逆元
* Au: Menci
*/
void exgcd(const int a, const int b, int &g, int &x, int &y) {
if (!b) g = a, x = 1, y = 0;
else exgcd(b, a % b, g, y, x), y -= x * (a / b);
}
inline int inv(const int num) {
int g, x, y;
exgcd(num, MOD, g, x, y);
return ((x % MOD) + MOD) % MOD;
}
For more specific explanation, see Link .
组合数
/* Luogu 2822 组合数问题
* Au: GG
* C_n^m=\frac{n!}{m!(n - m)!}
* 预处理 DP O(n^2) + 统计 O(n)
*/
const int N = 2000 + 3, Nx = 2001;
int n, m, t, k, ans, c[N][N], d[N][N];
int main() {
scanf("%d%d", &t, &k);
for (int i = 1; i <= Nx; i++) {
c[i][1] = i % k; c[i][i] = 1;
}
for (int i = 2; i <= Nx; i++)
for (int j = 2; j <= i - 1; j++)
c[i][j] = (c[i - 1][j] % k + c[i - 1][j - 1] % k) % k;
for (int i = 1; i <= Nx; i++)
for (int j = 1; j <= i; j++) {
if (c[i][j]) d[i][j] = d[i][j - 1];
else d[i][j] = d[i][j - 1] + 1;
}
while (t--) {
scanf("%d%d", &n, &m);
ans = 0;
for (int i = 1; i <= n; i++) {
if (i > m) ans += d[i][m]; else ans += d[i][i];
}
printf("%d\n", ans);
}
return 0;
}
同余方程
\]
\]
void exgcd(const int a, const int b, int &g, int &x, int &y) {
if (!b) g = a, x = 1, y = 0;
else exgcd(b, a % b, g, y, x), y -= x * (a / b);
}
int main() {
int a, b, g, x, y;
scanf("%d%d", &a, &b);
exgcd(a, b, g, x, y);
printf("%d\n", (x + b) % b);
return 0;
}
素数筛法
Eratosthenes 筛法:
/* Sieve of Eratosthenes
* Au: GG
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 100000002;
int n, prime[N], tot;
bool check[N];
inline void Sieve_of_Eratosthenes() {
for (register int i = 2; i <= n; i++) {
if (!check[i]) prime[tot++] = i;
for (register int j = 0; j < tot; j++) {
if (i * prime[j] > n) break;
check[i * prime[j]] = true;
if (i % prime[j] == 0) break;
}
}
}
int main() {
scanf("%d", &n);
Sieve_of_Eratosthenes();
printf("%d\n", tot);
return 0;
}
GCD
ll gcd(ll x, ll y) {
if (x == y) return x;
return !y ? x : gcd(y, x % y);
}
GCD 欧几里得算法
$ a,b $ 为正整数,设集合 \(A=\{xa+yb | x, y\) 是整数 \(\}\),则 $ A $ 中最小正元素是 $ \gcd(a,b) $
long kgcd(long a, long b) {
if (a == 0) return b;
if (b == 0) return a;
if (!(a & 1) && !(b & 1)) return kgcd(a >> 1, b >> 1) << 1;
else if (!(b & 1)) return kgcd(a, b >> 1);
else if (!(a & 1)) return kgcd(a >> 1, b);
else return kgcd(abs(a - b), min(a, b));
}
LCM
\]
实际上最好写成 $ a \div \text{lcm} (a,b) \times b $.
long lcm(long a, long b) {
long c, d, sw;
c = (a >= b) ? a : b;
d = (a <= b) ? a : b;
while (c % d != 0) {
sw = c % d;
c = d;
d = sw;
}
return (a / d) * b;
}
求多个数的 \(\textrm{LCM}\),需要将 \(res\) 初始化为 \(1\)
数的各位之和
int sum(int number) {
int sum = 0;
while (number != 0) {
sum += number % 10;
number /= 10;
}
return sum;
} // 不知道数有几位,但是可以每次都取个位
年份、日期
Reference: Link
/* 判断是否闰年 */
bool isleap(int& year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return true;
else return false;
}
/* 返回一年的最大天数 */
int maxday(int& year) {
if (isleap(year)) return 366;
else return 365;
}
// Days 是指距离某个日期是多少天, 应该均可以的, 只是最终结果可能有所变化的.
string getweek(int& days) {
return week[days % 7];
}
中国剩余定理
For more specific explanation, see Link .
NOIp 数学 (小学奥数)的更多相关文章
- 【GDKOI2017】 两个胖子萌萌哒 小学奥数题
题目大意:给你一个$n\times m$的网格,你要在这个网格上画三角形. 三角形的顶点只能在网格的整点上,且至少有一条边平行于$x$或$y$轴,且三角形面积为整数.问你能画多少个不同的三角形. 两个 ...
- python基础===一道小学奥数题的解法
今早在博客园和大家分享了一道昨晚微博中看到的小学奥数题,后来有朋友给出了答案.然后我尝试用python解答它. 原题是这样的: 数学题:好事好 + 要做好 = 要做好事,求 “好.事.做.要”的值分别 ...
- luogu 1258 小车问题 小学奥数(?)
题目链接 题意 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能使两人尽快同时到 ...
- [CSP-S模拟测试]:方程的解(小学奥数)
题目描述 给出一个二元一次方程$ax+by=c$,其中$x$.$y$是未知数,求它的正整数解的数量. 输入格式 第一行一个整数$T$,表示有$T$组数据.接下来$T$行,每行$3$个整数$a$.$b$ ...
- NOI上看到的几个小学奥数
:余数相同问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同 ...
- 一个hin秀的小学三年级奥数题 [hin秀]
~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题 [hin秀] 题目: 给出一个无限大的棋盘 n×n (n>0 , 是 ...
- Noip数学整理
目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...
- 鬼知道NOI会不会成为下一个奥数
认真写作文不可能的,这辈子不可能认真写作文的. (月考,期末考,高考即将到达战场,真香警告) 以下应该成为原稿!!! 真.喜欢写感悟,但我感觉我可能把它写的有点商业化,商业化的文章不可能放的,所以我尽 ...
- NOIp 数学知识点总结
推荐阅读 NOIp 基础数论知识点总结: https://www.cnblogs.com/greyqz/p/number.html 排列组合 常用公式 排列:\[\displaystyle A_n^m ...
随机推荐
- nw打包vue项目exe更换图标
web项目用nw打包好了之后发现没办法更换桌面显示图标问题,找了一下发现大多推荐Resource进行最后更换,试了第一次怎么也不管用,电脑重启了一下就行了...... 首先下载安装好了Resource ...
- 【ABAP系列】SAP GUI740 PATCH5出现弹窗BUG
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP GUI740 PATCH ...
- 【ABAP系列】SAP ABAP 用BAPI批量导入物料的质量视图
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 用BAPI批量导入 ...
- C#打印单据
HTML: <form id="form1"> <div id="t_border"> <!- ...
- java面向对象基础总结
本周学习了java面向对象的一些基本概念,介绍了它三个主要特性,封装性.继承性.多态性,类与对象的关系,栈堆的关系,三个特性中主要讲了封装性,其他两个后面再讲. 类实际上是表示一个客观世界某类群体的一 ...
- display:table
display:table的CSS声明能够让一个HTML元素和它的子节点像table元素一样.使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界.背景等样式,而不会产生因为使用了table那 ...
- [2019杭电多校第五场][hdu6628]permutation 1
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6628 题意为求字典序第k小的差异数组,差异数组p满足p[i]=a[i+1]-a[i]. 头铁的爆搜,因 ...
- [BZOJ4476] [JSOI2015] 送礼物 (01分数规划+ST表)
[BZOJ4476] [JSOI2015] 送礼物 (01分数规划+ST表) 题面 给出n,k,l,r和序列a,要求从a中选一段连续的区间[i,j]出来,使得M(i,j)-m(i,j)/(j-i+k) ...
- python抓取往期双色球
import requests import json,csv ''' http://m.zhcw.com/clienth5.do?lottery=FC_SSQ&pageSize=20& ...
- OpenCV-----图像的加载与保存
OpenCV中的图像: 定义:在opencv中图像就是结构化存储数据的信息. 属性:1.宽.高和通道数目 1 print(image.shape) #形状:行(长).列(宽).通道数(深度) 2.像素 ...