zoukankan      html  css  js  c++  java
  • 备战NOIP——模板复习24

    这里只有模板,并不作讲解,仅为路过的各位做一个参考以及用做自己复习的资料,转载注明出处。




    逆元

    费马小定理

    EX-GCD

    线性递推




    逆元

    费马小定理

    /*Copyright: Copyright (c) 2018
    *Created on 2018-11-07
    *Author: 十甫
    *Version 1.0 
    *Title: 逆元-费马小定理
    *Time: 2 mins
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    
    inline ll mul(ll a, ll b, ll mod) {
    	ll res = 1;
    	while(b) {
    		if(b & 1) res = ((res % mod) * (a % mod));
    		a = ((a % mod) * (a % mod));
    		b /= 2;
    	}
    	return res;
    }
    
    int main() {
    	ll n, k;
    	scanf("%lld%lld", &n, &k);
    	printf("%lld
    ", mul(n, k - 2, k));
    	return 0;
    }

    EX-GCD

    /*Copyright: Copyright (c) 2018
    *Created on 2018-11-07
    *Author: 十甫
    *Version 1.0 
    *Title: 逆元-EX-GCD
    *Time: 2 mins
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long ll;
    
    inline void exgcd(ll a, ll b, ll &x, ll &y, ll mod) {
    	if(!b) {
    		x = 1, y = 0;
    		return;
    	}
    	exgcd(b, a % b, y, x, mod);
    	y -= (a / b) * x;
    	y = (y + mod) % mod;
    }
    
    int main() {
    	ll n, k;
    	scanf("%lld%lld", &n, &k);
    	ll a, b;
    	exgcd(n, k, a, b, k);
    	printf("%lld
    ", a);
    	return 0;
    }

    线性递推

    /*Copyright: Copyright (c) 2018
    *Created on 2018-11-07
    *Author: 十甫
    *Version 1.0 
    *Title: 逆元-线性递推
    *Time: inf mins
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    const int size = 10005;
    
    int inv[size];
    inline void make(int n, int p) {
    	inv[1] = 1;
    	for(int i = 2;i <= n;i++) {
    		inv[i] = inv[p % i] * (p - p / i) % p;
    	}
    }
    
    int main() {
    	int n, p;
    	scanf("%d%d", &n, &p);
    	make(n, p);
    	printf("%d
    ", inv[n]);
    	return 0;
    }
    NOIP 2018 RP++
  • 相关阅读:
    September 22nd 2016 Week 39th Thursday
    September 21st 2016 Week 39th Wednesday
    android 几个小技巧
    深入理解计算机系统----经验之谈
    输入数字如何获取
    super 和this的用法
    java程序员修炼之道
    eclipse 如何使用svn
    如何手动添加Android Dependencies包
    如何查看正在使用端口号并利用任务管理器将其关闭
  • 原文地址:https://www.cnblogs.com/Black-S/p/9930699.html
Copyright © 2011-2022 走看看