`
hellojyj
  • 浏览: 61495 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

HDU 1576 A/B

    博客分类:
  • ACM
阅读更多

原题传送门: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)。
 

 

Output

 

对应每组数据输出(A/B)%9973。
 

 

Sample Input
2
1000 53
87 123456789
 

 

Sample Output
7922
6060
 

 

Author

 

xhd
 

 

Source

 

 

 

 

Recommend

 

linle   |   We have carefully selected several similar problems for you:  1788 1211 1787 1299 1573
/** 方法一:
    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;
}
 
分享到:
评论

相关推荐

    hdu 1753 大明A+B

    现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。 Input 本题目包含多组测试数据,请处理到文件结束。 每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。 Output 请在一行里面...

    HDU ACM as easy as a+b

    - **as easy as a+b** 这个短语在这类题目中通常用来暗示题目难度较低,意味着只需要简单的数学加法操作即可完成任务。 #### 标签:ACM - 标签“ACM”再次强调了本题与ACM程序设计竞赛的相关性,提示读者此题可能...

    hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj

    具体来说,这个问题是关于 "a+b" 求和的,同时也可能涉及其他数学或编程相关的求解问题。 在编程竞赛或在线判题系统中,"oj题求和"通常指的是提交的代码需要处理一系列整数对 (a, b),并计算它们的和。这类问题通常...

    hdu1250高精度加法

    - 这个函数接收两个字符串参数`a`和`b`,代表两个待相加的大整数,以及一个整数`fn`作为结果存放的位置索引。 - 函数内部首先计算两个数的长度,然后进行逐位相加,同时考虑进位的情况。 - 结果存储在一个临时的`...

    HDU ACM 2005第几天 txt格式

    b = a; for (i = 0; i &lt;= 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 ...

    hduacm2539代码

    这里使用`getchar()`跳过输入行中的换行符,然后通过`gets()`读取整个字符串到结构体数组`a`的`b`成员中。需要注意的是,`gets()`函数是不安全的,因为它没有内置长度限制,可能会导致缓冲区溢出问题。在实际应用中...

    hdu 3333 turing tree 解题报告

    1. `a` 和 `b`:表示节点覆盖的区间左边界和右边界。 2. `value`:表示在区间 `[a, b]` 内,所有不同数字的和。 3. `left` 和 `right`:指向左右子节点的指针,用于递归地处理区间。 **算法步骤**: 1. 初始化线段...

    hdu 1695 GCD(欧拉函数+容斥原理).docx

    问题就转化为了求 1 ~ a/k 和 1 ~ b/k 间互质对数的问题。 可以把 a 设置为小的那个数,那么以 y/x 来保持唯一性(题目要求,比如 [1, 3] = [3, 1])。接下来分两种状况: 1. y = a,那么对数就是 1 ~ a 的欧拉...

    3-杭电A+B题目C╱C++参考代码.rar

    在编程竞赛中,杭电(HDU)的在线判题系统提供了许多经典的编程题目,其中包括基础的A+B问题。这类问题通常要求程序能处理两个整数的加法运算,并输出它们的和。尽管看似简单,但这类题目对于初学者来说是理解和掌握...

    HDU4802解题报告

    成绩用A、B、C、D、F以及特殊的P、N表示,其中P代表通过,N代表不通过。对于基于"Pass/Not pass"政策的课程(标记为P或N),不应计入GPA计算。GPA的计算方法是将所有课程的分数乘以相应的学分后求和,然后除以所有...

    HDS9970 HP XP128 SUN 9970V

    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李竹_Zjooc数图在线作业.rar

    本资源为HDU数字图像处理课程 浙江省在线平台的视频课后作业 仅供参考 假设我们有一个mat型的单通道图像,命名为srcMat,我们想得到第i行,第j列的像素值则可以用一下的代码 A. int value= srcMat.at&lt;Vec3b&gt;(i)(j)[0...

    hdu杭电所有题目按照ac数量排序,python分析

    - **输入输出实践类题目**:如A+B for Input-Output Practice系列。这类题目旨在训练学生对输入输出操作的掌握。 - **数据结构和算法类题目**:例如求最大子序列和(MaxSum)等。这些题目要求深入理解并应用特定的数据...

    hdu 1166线段树

    它接受三个参数:当前区间的左边界`a`、右边界`b`以及节点编号`n`。函数首先设置当前节点的边界和中间点,然后递归地为左右子区间构建子树,直到当前区间只剩下一个元素为止。 #### 更新操作 线段树支持两种类型的...

    hdu 2000 -2099 题集

    根据给定的百分制分数,将其转换为A、B、C、D、E五个等级。程序需要检查输入是否在0到100的范围内,并输出相应的等级或错误信息。 6. **2005第几天?**:这是一个日期处理问题,需要计算输入日期在当年的位置。输入...

    hdu 汉诺塔

    汉诺塔问题可以简单概括为:有三根柱子A、B、C和n个不同大小的圆盘,所有的圆盘最初都放在柱子A上,并且从下至上按从大到小的顺序排列。目标是将所有圆盘移动到柱子C上,并保持相同大小顺序,每次只能移动一个圆盘,...

    hdu 1200 code

    a b c h d g f e ``` 从上到下输出的结果则为 "abccdefgh"。 ### 2. C语言基础 #### 2.1 输入输出 - **`scanf`**: 用于格式化读取输入。此处用法为 `scanf("%d%*c",&n)`,其中 `%d` 表示读取一个整数,`%*c` 表示...

Global site tag (gtag.js) - Google Analytics