ret

CF1106F Lunar New Year and a Recursive Sequence——矩阵快速幂&&bsgs

时光毁灭记忆、已成空白 提交于 2019-11-29 09:41:57
题意 设 $$f_i = \left\{\begin{matrix} 1 , \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i < k\\ \prod_{j=1}^k f_{i-j}^{b_j} \ mod \ p, \ \ \ \ \ i > k \end{matrix}\right.$$ 求 $f_k$($1 \leq f_k < p$),使得 $f_m = n$.($1 \leq k\leq 100$) 分析 $f_n$ 可以表示成 ${f_k}^x$ 的形式,也就是指数的线性递推式,用矩阵快速幂求出最终 $f_n$ 中的次数就行了。 $$\begin{bmatrix} f_k\\ f_{k-1}\\ \vdots \\ f_1 \end{bmatrix} = \begin{bmatrix} b_1 & b_2 & \cdots & b_k\\ 1 & 0 & 0 & 0\\ \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} f_{k-1}\\ f_{k-2}\\ \vdots \\ f_0 \end{bmatrix}$$ 即 $F_n = B\cdot F_{n-1} = B^{n-k}F_k$

python random模块使用

喜你入骨 提交于 2019-11-29 04:45:13
import random # 0-1的浮点数 float ret = random.random() print(ret) # 0.18216094743707534 # 0-5的整形,包括5 ret = random.randint(0, 5) print(ret) # 2 # 0-5的整形,不包括5 ret = random.randrange(0, 5) print(ret) # 3 # 从可迭代对象随机获取一个值 ret = random.choice([11, 22, 33]) print(ret) # 22 # 从可迭代对象随机获取值,第二个参数是获取值得个数 ret = random.sample([11, 22, 33, 11], 3) print(ret) # [22, 11, 33] # 获取指定范围的浮点数 float ret = random.uniform(1, 4) print(ret) # 1.106849277952516 # 打乱列表的顺序 ret = [1, 2, 3, 4, 5, 6] random.shuffle(ret) print(ret) # [2, 6, 5, 3, 1, 4] # 使用实例 # 验证码函数 def v_code(): ret = '' for i in range(4): # 获取0-9的随机数 num =

doraemon的python 池

安稳与你 提交于 2019-11-29 00:39:40
9.7 池 为什么要有池: 预先的开启固定个数的进程数,当任务来临的时候,直接提交给已经开好的进程 这些已经开好的进程直接去执行程序 节省了进程、线程开启、关闭、切换的时间 并且减轻了操作系统的调度负担 9.7.1 进程池 import os import timeimport randomfrom concurrent.futures import ProcessPoolExecutor​df func(): print('start',os.gitpid()) time.sleep(random.random()) print('edf',os.getpid()) if __name__ == '__main__': p = ProcessPollExcutor(5) for i in range(10): p.submit() p.shutdown() #关闭池之后就不能继续提交任务,并且会阻塞,直到已经提交的任务完成 print('main',os.getpid()) 任务参数+返回值 from concurrent.futures import ProcessPoolExecutordef func(i,name): print('start',os.getpid()) time.sleep(random.randint(1,3)) print('end', os

HDU 4352 XHXJ's LIS

主宰稳场 提交于 2019-11-28 16:26:46
奇妙的题。 你先得会另外一个nlogn的LIS算法。(我一直只会BIT。。。。。) 然后维护下每个数码作为结尾出现过没有就完了。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> long long t,l,r,k,ret=0,bit[21]; struct pnt { long long k[11]; }dp[22][1<<10]; void reset() { for (long long i=0;i<=21;i++) for (long long j=0;j<(1<<10);j++) for (long long k=0;k<=10;k++) dp[i][j].k[k]=-1; } void get_bit(long long x) { ret=0; while (x) {bit[++ret]=x%10;x/=10;} } long long bit_cnt(long long x) { long long ret=0; while (x) {if (x&1) ret++;x>>=1;} return ret; } long long get_sets(long long sets,long long x) { if (sets&(1<<x)) return sets; sets

day17

余生长醉 提交于 2019-11-27 23:37:41
1. re模块的查找方法 # import re # regex(正则表达式) # 1. 查找方法 # findall: 匹配所有,每一项都是列表中的一个元素 # ret = re.findall('\d+','sdadsa172节食加胡斐928') # 正则表达式,待匹配的字符串,flag # ret = re.findall('\d','sdadsa172节食加胡斐928') # 正则表达式,待匹配的字符串,flag # print(ret) # search: 只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,通过这个变量的group方法来获取结果 # 如果没有匹配到,会返回None,使用group会报错 # ret = re.search('\d+','sddsa172节食加胡斐928') # print(ret) # 返回的是内存地址,这是一个正则匹配的结果 # print(ret.group()) # 通过ret.group()获取真正的结果 # # ret = re.search('\d', "orweirjuqhnqd") # print(ret) # None # print(ret.group()) # 报错 # # ret = re.search('\d+','sddsa172节食加胡斐928') # if ret: # 如果ret不是None

计算移动平均数

廉价感情. 提交于 2019-11-27 19:38:56
题目:通过使用生成器来做到对每输入一个值就计算一次平均数。 def init(func): def inner(*args,**kwargs): g = func(*args,**kwargs) g.__next__() return g return inner @init def avgrage(): sum = 0 count = 0 avg = 0 while True: num = yield avg sum += num count += 1 avg = sum/count avg_g = avgrage() ret = avg_g.send(10) print(ret) ret = avg_g.send(76) print(ret) View Code 通过给生成器装上一个装饰器,可以在对进行输入的时候少写一行代码。 如果不加装饰器 def avgrage(): sum = 0 count = 0 avg = 0 while True: num = yield avg sum += num count += 1 avg = sum/count avg_g = avgrage() avg_g.__next__() ret = avg_g.send(10) print(ret) ret = avg_g.send(76) print(ret) View Code 对比而言

ORM _meta

妖精的绣舞 提交于 2019-11-27 19:38:43
import os if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'XadminDemon.settings') import django django.setup() from app01 import models # 获取app的值 ret = models.Book._meta.app_label print(ret) # 获取模型的名称 ret = models.Book._meta.model_name print(ret) # 获取字段的属性 obj = models.Book._meta.get_field("title") ret = obj.verbose_name print(ret) obj = models.Book._meta.get_field("price") ret = obj.verbose_name print(ret) """ app01 book 书名 price """ 来源: https://www.cnblogs.com/wt7018/p/11374559.html

完全高精度

吃可爱长大的小学妹 提交于 2019-11-27 15:01:29
from kuangbin 包含了 + - * / ^ % = > >> << == 运算符的重载,可用 int char* BigNum 调用构造函数 #define MAXN 9999 #define MAXSIZE 100000 #define DLEN 4 class BigNum { public: int a[MAXSIZE]; int len; public: BigNum(){len = 1;memset(a,0,sizeof(a));} BigNum(const int); BigNum(const char*); BigNum(const BigNum &); BigNum &operator=(const BigNum &); friend istream& operator>>(istream&, BigNum&); friend ostream& operator<<(ostream&, BigNum&); BigNum operator+(const BigNum &) const; BigNum operator-(const BigNum &) const; BigNum operator*(const BigNum &) const; BigNum operator/(const int &) const; BigNum operator^

生成器

烂漫一生 提交于 2019-11-27 13:54:55
普通函数 def generator(): print(1) return 'a' ret = generator() print(ret) View Code 生成器 #生成器函数/yield必须再函数里面且不能与return共用。 def generator(): print(1) yield 'a' #生成器函数执行之后会得到一个生成器作为一个返回值 ret = generator() print(ret) print(ret.__next__()) View Code 注意一点: 在生成器中yield不会结束一个程序。但是比较有意思的一点是当一个函数里面有多个yield的时候,需要多次调用和函数里面yield次数一样多的调用,例如: #生成器函数/yield必须再函数里面且不能与return共用。 def generator(): print(1) yield 'a' print(2) yield 'b' #生成器函数执行之后会得到一个生成器作为一个返回值 ret = generator() print(ret) print(ret.__next__()) print(ret) print(ret.__next__()) View Cod 如果只调用一次的话就会再第一次返回值时跳出函数并打印之前的代码,但是函数并没有结束,而是再等待下一次的调用。 来源: https:/

LEETCODE 7 整数反转

拟墨画扇 提交于 2019-11-26 23:28:49
class Solution { public: int reverse(int x) { long long ret=0; long long cmp1=((long long)1<<31)-1; long long cmp2=-cmp1-1; while(x!=0) { ret=ret*10+x%10; if((ret>cmp1)||(ret<cmp2)) return 0; x/=10; } return ret; } }; 注意不能直接写1<<32,因为默认1是int的,然后-优先级高于<<,用括号吧 用long long cmp1=((long long)1<<31)-1; 这题感觉描述的有问题,我还以为是输入范围也在-2^32 - 2^32-1,结果错了一次.... #include<limits.h> #define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1) 32位情况,C中int类型是32位的,范围是-2147483648到2147483647 。 来源: https://www.cnblogs.com/lqerio/p/11745846.html