zoukankan      html  css  js  c++  java
  • P2613 【模板】有理数取余

    题目描述

    给出一个有理数 $c=frac{a}{b}$ ,求 c mod 19260817 的值。

    输入输出格式

    输入格式:

     

    一共两行。

    第一行,一个整数 aa 。
    第二行,一个整数 bb 。

     

    输出格式:

     

    一个整数,代表求余后的结果。如果无解,输出Angry!

     

    输入输出样例

    输入样例#1: 
    233
    666
    
    输出样例#1: 
    18595654
    

    说明

    对于所有数据, 0a,b1010001

    Solution:

      本题太板子,不多讲。

      读入时处理一下$a,b$,先取模一下,然后直接扩欧或者费马小定理搞出$b$的逆元$b^{-1}$,最后乘下取模就好了。

    代码:

    #include<bits/stdc++.h>
    #define il inline
    #define ll long long
    #define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
    #define Bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)
    using namespace std;
    const int N=10005,mod=19260817;
    int la,lb,n,m;
    char a[N],b[N];
    
    il ll fast(ll s,int k){
        ll ans=1;
        while(k){
            if(k&1)ans=ans*s%mod;
            k>>=1;
            s=s*s%mod;
        }
        return ans;
    }
    
    int main(){
        scanf("%s%s",a+1,b+1);
        la=strlen(a+1),lb=strlen(b+1);
        For(i,1,la) n=((n<<3)+(n<<1)+a[i]-48)%mod;
        For(i,1,lb) m=((m<<3)+(m<<1)+b[i]-48)%mod;
        if(!m)puts("Angry!"),exit(0);
        printf("%lld",n*fast(m,mod-2)%mod);
        return 0;
    }
  • 相关阅读:
    @SneakyThrows
    docker部署elasticsearch
    docker部署rabbitmq
    docker部署minio
    docker 部署 jenkins
    linux 根据文件名全局查找位置
    docker 容器与宿主机之间文件拷贝
    excel 查看当前单元格是否存在某一列
    机器学习sklearn
    一些博客链接
  • 原文地址:https://www.cnblogs.com/five20/p/9361054.html
Copyright © 2011-2022 走看看