原题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1576
A/B
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1929 Accepted Submission(s): 1421
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
2
1000 53
87 123456789
Sample Output
7922
6060
Author
xhd
Source
Recommend
/** 方法一: A = n+9973k; (k为大于等于0的正整数) 令x = A/B;则A = B*x; => B*x = n+9973k; => B*x - 9973k = n; 再由方程B*x1 + 9973y1 = gcd(B,9973); 如果能解出x1,那么x = nx1; k取-ny1的时候, 方程B*x - 9973k = n 成立; 现在的问题是怎么解出x1? 当然是扩展欧几里德算法啊! 题目中gcd(B,9973) = 1; 对于方程Bx1 + 9973y1 = 1; */ #include<cstdio> #define MOD 9973 int n,B; int t,x,y,d; void ex_gcd(int a,int b,int &d,int &x,int &y) { if(b==0){d = a;x=1;y=0;} else{ ex_gcd(b,a%b,d,y,x); y = y-(a/b)*x; } } int main() { scanf("%d",&t); while(t--) { d = 1; scanf("%d%d",&n,&B); ex_gcd(B,MOD,d,x,y); x = n*x; printf("%d\n",(x%MOD+9973)%MOD); } return 0; } /** 方法二: A = n+9973k; (k为大于等于0的正整数) 令C = A/B; C = t*9973 + x;这里x为所求(A/B)%9973; 则A = B*C = B*t*9973 + B*x ; =>n+9973k = 9973Bt +Bx; =>9973k = 9973Bt + (Bx - n); 所以(Bx - n)%9973 = 0; 应为x<9973;枚举就可以解决 */ #include<cstdio> #define MOD 9973 long long n,B; int t,x; int main() { scanf("%d",&t); while(t--) { x = 0; scanf("%I64d%I64d",&n,&B); while((B*x-n)%9973 != 0) { x++; } printf("%d\n",x); } return 0; }
相关推荐
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。 Input 本题目包含多组测试数据,请处理到文件结束。 每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。 Output 请在一行里面...
- **as easy as a+b** 这个短语在这类题目中通常用来暗示题目难度较低,意味着只需要简单的数学加法操作即可完成任务。 #### 标签:ACM - 标签“ACM”再次强调了本题与ACM程序设计竞赛的相关性,提示读者此题可能...
具体来说,这个问题是关于 "a+b" 求和的,同时也可能涉及其他数学或编程相关的求解问题。 在编程竞赛或在线判题系统中,"oj题求和"通常指的是提交的代码需要处理一系列整数对 (a, b),并计算它们的和。这类问题通常...
- 这个函数接收两个字符串参数`a`和`b`,代表两个待相加的大整数,以及一个整数`fn`作为结果存放的位置索引。 - 函数内部首先计算两个数的长度,然后进行逐位相加,同时考虑进位的情况。 - 结果存储在一个临时的`...
b = a; for (i = 0; i <= b; i++) { // 逐月累加天数 if (a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12) { days += 31; } else if (a == 2) { // 判断是否为闰年 if (year % 400 ...
这里使用`getchar()`跳过输入行中的换行符,然后通过`gets()`读取整个字符串到结构体数组`a`的`b`成员中。需要注意的是,`gets()`函数是不安全的,因为它没有内置长度限制,可能会导致缓冲区溢出问题。在实际应用中...
1. `a` 和 `b`:表示节点覆盖的区间左边界和右边界。 2. `value`:表示在区间 `[a, b]` 内,所有不同数字的和。 3. `left` 和 `right`:指向左右子节点的指针,用于递归地处理区间。 **算法步骤**: 1. 初始化线段...
问题就转化为了求 1 ~ a/k 和 1 ~ b/k 间互质对数的问题。 可以把 a 设置为小的那个数,那么以 y/x 来保持唯一性(题目要求,比如 [1, 3] = [3, 1])。接下来分两种状况: 1. y = a,那么对数就是 1 ~ a 的欧拉...
在编程竞赛中,杭电(HDU)的在线判题系统提供了许多经典的编程题目,其中包括基础的A+B问题。这类问题通常要求程序能处理两个整数的加法运算,并输出它们的和。尽管看似简单,但这类题目对于初学者来说是理解和掌握...
成绩用A、B、C、D、F以及特殊的P、N表示,其中P代表通过,N代表不通过。对于基于"Pass/Not pass"政策的课程(标记为P或N),不应计入GPA计算。GPA的计算方法是将所有课程的分数乘以相应的学分后求和,然后除以所有...
8 5513979-A WP471-A×1 & SH281-B×2 (DKA) 2 SP 9 5513979-B WP471-B×1 & SH281-B×4 (DKA) 2 SP 10 5513976-A WP490-A P/K ASSY (CACHE) 2 SP 11 5513975-C WP481-C P/K ASSY (CSW-S) 2 SP 12 5513977-B SH288-B...
本资源为HDU数字图像处理课程 浙江省在线平台的视频课后作业 仅供参考 假设我们有一个mat型的单通道图像,命名为srcMat,我们想得到第i行,第j列的像素值则可以用一下的代码 A. int value= srcMat.at<Vec3b>(i)(j)[0...
- **输入输出实践类题目**:如A+B for Input-Output Practice系列。这类题目旨在训练学生对输入输出操作的掌握。 - **数据结构和算法类题目**:例如求最大子序列和(MaxSum)等。这些题目要求深入理解并应用特定的数据...
它接受三个参数:当前区间的左边界`a`、右边界`b`以及节点编号`n`。函数首先设置当前节点的边界和中间点,然后递归地为左右子区间构建子树,直到当前区间只剩下一个元素为止。 #### 更新操作 线段树支持两种类型的...
根据给定的百分制分数,将其转换为A、B、C、D、E五个等级。程序需要检查输入是否在0到100的范围内,并输出相应的等级或错误信息。 6. **2005第几天?**:这是一个日期处理问题,需要计算输入日期在当年的位置。输入...
汉诺塔问题可以简单概括为:有三根柱子A、B、C和n个不同大小的圆盘,所有的圆盘最初都放在柱子A上,并且从下至上按从大到小的顺序排列。目标是将所有圆盘移动到柱子C上,并保持相同大小顺序,每次只能移动一个圆盘,...
a b c h d g f e ``` 从上到下输出的结果则为 "abccdefgh"。 ### 2. C语言基础 #### 2.1 输入输出 - **`scanf`**: 用于格式化读取输入。此处用法为 `scanf("%d%*c",&n)`,其中 `%d` 表示读取一个整数,`%*c` 表示...