A/B HDU
来源:互联网 发布:java的输入输出流 编辑:程序博客网 时间:2024/06/05 00:24
A/B
Problem Description
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
Input
数据的第一行是一个T,表示有T组数据。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
Output
对应每组数据输出(A/B)%9973。
Sample Input
21000 5387 123456789
Sample Output
79226060
Author
xhd
Source
HDU 2007-1 Programming Contest
Recommend
linle
分析:
从题目中可以得到
n=A%9973
gcd(B,9973)=1
A%B==0
所以可以得到
n=A-A/9973*9973
A=Bx
n=Bx-y*9973
所以可以用扩展欧几里德求解x
x=A/B再取%9973就可以了
AC代码:
#include<stdio.h>#include<string.h>long long kzgcd(long long a,long long b,long long &x,long long &y){if(b==0){x=1,y=0;return a;}long long ans=kzgcd(b,a%b,x,y);long long t=x;x=y;y=t-(a/b)*y;return ans;}long long solve(long long a,long long b,long long c){long long x,y;kzgcd(a,b,x,y);long long ans=(x*c)%b;if(ans<=0)ans+=b;return ans;}int main(){int T;scanf("%d",&T);while(T--){long long n,B;scanf("%lld%lld",&n,&B);printf("%lld\n",solve(B,9973,n));}}
阅读全文
0 0
- HDU 2033 A+B
- HDU 2034 A-B
- hdu 1412 {A} + {B}
- HDU 1096 A+B
- HDU A^B
- HDU 1412 {A}+{B}
- hdu 1228A+B
- HDU 1412 ( {A} + {B} )
- HDU 1228 ( A + B )
- hdu 1288 A + B
- hdu 1228 A + B
- HDU 1229 A + B
- HDU 1412 {A}+{B}
- hdu A/B
- hdu A/B
- hdu 1228 A + B
- HDU 1228 A+B
- hdu A + B problem
- Remind-You Part2. setup.py打包代码, socket通讯
- Remind-You Part3. Python-Sqlite记录数据
- 简单工厂、工厂方法模式和抽象工厂模式区别?
- webstorm快捷键大全
- 题目1016:火星A+B
- A/B HDU
- 暑期集训—day4—第一次暑期训练
- SQL注入教程——(一)SQL注入原理
- 几种值交换的方法及利弊
- 学习网址
- JAVA重新学习第一篇-java是什么
- 通过示例看JavaScript的闭包
- java se TCP上传文件
- 贪心算法(上)