洛谷 P2613 【模板】有理数取余

题目描述

给出一个有理数c=\frac{a}{b}c=ba,求c\ \bmod 19260817c mod19260817的值。

输入输出格式

输入格式:

 

一共两行。

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

 

输出格式:

 

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

 

输入输出样例

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

说明

对于所有数据,0\leq a,b \leq 10^{10001}0a,b1010001

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 19260817
using namespace std;
char s[10011];
long long a,b;
long long d0,x0,y0;
long long read(){
    scanf("%s",s);
    int len=strlen(s),num=0;
    for(int i=0;i<len;i++)
        num=(num*10+s[i]-'0')%mod;
    return num;
}
void exgcd(long long a,long long b,long long &d,long long &x,long long &y){
    if(!b){ d=a;x=1;y=0; }
    else{ exgcd(b,a%b,d,y,x);y-=(a/b)*x; }
}
int main(){
    a=read();b=read();
    exgcd(b,mod,d0,x0,y0);
    if(d0!=1){
        puts("Angry!");
        return 0;
    }
    else{
        printf("%lld",a*((x0%mod+mod)%mod)%mod);
        return 0;
    }
}

 

posted @ 2018-11-08 17:06  一蓑烟雨任生平  阅读(141)  评论(0编辑  收藏  举报