ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P2613 【模板】有理数取余

2021-11-14 20:04:34  阅读:156  来源: 互联网

标签:ch 有理数 int res P2613 isdigit 取余 getchar mod


在这里插入图片描述
在这里插入图片描述


看这个数据范围,就是天王老子来了他也存不下啊。
所以在读入的时候就要对之取余。
介绍一下快速读入:
int的快速读入
全文背诵。

inline int getint()
{
    int res=0,ch=getchar(); //ch用来过滤其他字符
    while(!isdigit(ch)&&ch!=EOF)
        ch=getchar();
    while(isdigit(ch))
    {
        res=(res<<3)+(res<<1)+(ch-'0');
        ch=getchar();
    }
    return res;
}
int a = getint();//== scanf("%d",&a);

在这里插入图片描述
具体操作看图。
最后的结果就是求ax
不过x要取一下正。

a(x%mod+mod)%mod;
#include<iostream>
#include<cstring>
#include<algorithm>
#define mod 19260817
using namespace std;
typedef long long int ll;
ll x,y;
inline int getint()
{
    int res=0,ch=getchar();
    while(!isdigit(ch)&&ch!=EOF)
        ch=getchar();
    while(isdigit(ch))
    {
        res=(res<<3)+(res<<1)+(ch-'0');
        res %= mod;
        ch=getchar();
    }
    return res;
}
void exgcd(ll a ,ll b)
{
    if(b==0)
    {
        x=1;y=0;return;
    }
    exgcd(b,a%b);
    ll temp=y;
    y=x-(a/b)*y;
    x=temp;
}
int main()
{
    int a,b;
    a=getint();b=getint();
    a%=mod;
    b%=mod;
    exgcd(b,mod);
    cout<<a*(x%mod+mod)%mod;
}

会了拓展欧几里得很简单。
拓展欧几里得其实和欧几里得没啥大的区别,无非就是求出了具体的x,y而已。本质还是ax+by=gcd(a,b)。不过最后求了个x和y罢了。害害、

标签:ch,有理数,int,res,P2613,isdigit,取余,getchar,mod
来源: https://blog.csdn.net/qq_45895217/article/details/121322140

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有