zoukankan      html  css  js  c++  java
  • 有理数取余

    题目

    P2613 【模板】有理数取余

    解析

    简单的数论题
    发现并没有对小数取余这一说,所以我们把原式化一下,

    [(c=frac{a}{b})equiv a imes b^{-1}(mod p) ]

    因为(p)是质数,所以我们根据费马小定理(b^{p-1}equiv 1(mod p))
    (a imes b^{-1} imes 1 equiv c(mod p))
    (=>a imes b^{-1} imes b^{p-1} equiv c(mod p))
    (=>a imes b^{p-2} equiv c(mod p))
    于是我们求(a imes b^{p-2}(mod p))就好了,注意(b=0)时无解。
    输入的话根据同余的同加性和同乘性,在读入优化里加一个取余就好了

    代码

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int mod = 19260817;
    int a, b;
    
    inline int read() {
    	int x = 0, f = 0; char ch = getchar();
    	while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
    	while (isdigit(ch)) x = (x * 10 + ch - '0') % mod, ch = getchar();
    	return f ? -x : x;
    }
    
    int qpow(int a, int b) {
    	int ans = 1;
    	while (b) {
    		if (b & 1) ans = (ans * a) % mod;
    		a = (a * a) % mod, b >>= 1;
    	}
    	return ans;
    }
    
    main() {
    	a = read(), b = read();
    	if (b == 0) {
    		printf("Angry!");
    		return 0;
    	}
    	cout << (qpow(b, mod - 2) * a % mod + mod) % mod;
    }
    
  • 相关阅读:
    【css】border-image
    函数的调用
    函数的返回值
    定义函数的三种形式
    文件处理实战之购物车系统
    文件处理小结
    文件修改的两种方式
    with管理文件操作上下文
    绝对路径和相对路径
    基本的文件操作
  • 原文地址:https://www.cnblogs.com/lykkk/p/10902396.html
Copyright © 2011-2022 走看看