HDU 1576 A/B (两种解法)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576
分析:等式枚举法,由题意可得:,
,代入
,
得:
,把变量
合在一起得:
;即满足
为
倍数,因为
,所以解时唯一的。
使用扩展欧几里德算法 或 费马小定理 来求解,涉及到有关逆元的知识这里就不详细叙述了。
代码如下:
方法一(等式枚举):
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int t;
cin >> t;
while(t--)
{
long long a , b, n;
cin >> n >> b;
for(int i = 1;i <= 9972; i++)
{
long long x;
x = b * i - n;
if(x % 9973 == 0)
{
cout << i << endl;
break;
}
}
}
return 0;
}
方法二(求逆元法):
#include <bits/stdc++.h>
using namespace std;
// 费马小定理
/*long long quickpow(long long a, long long b) {
if (b < 0) return 0;
long long ret = 1;
a %= 9973;
while (b) {
if (b & 1) ret = (ret * a) % 9973;
b >>= 1;
a = (a * a) % 9973;
}
return ret;
}*/
int x, y;
int exgcd(int a, int b) { // 扩展欧几里德算法
int t;
if (b == 0) // 推理, 终止条件1
{
x = 1;
y = 0;
return a;
}
else {
exgcd(b, a%b);
t = x;
x = y;
y = t - (a/b) * y;
}
}
int main(void)
{
int t;
cin >> t;
while(t--)
{
long long a , b, n;
cin >> n >> b;
//int x = quickpow(b, 9973 - 2);
exgcd(b, 9973);
if (x < 0) x += 9973;
x *= n;
cout << x % 9973 << endl;
}
return 0;
}
HDU 1576 A/B (两种解法)的更多相关文章
- Java描述表达式求值的两种解法:双栈结构和二叉树
Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保 ...
- 51nod 1165 整边直角三角形的数量(两种解法)
链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1165 直角三角形,三条边的长度都是整数.给出周长N,求符合条件的三角形数量. ...
- Letter Combinations of a Phone Number:深度优先和广度优先两种解法
Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...
- 【Java面试真题】剑指Offer53.2——0~n-1中缺失的数字(异或、二分两种解法)
[Java实现]剑指Offer53.2--0~n-1中缺失的数字:面试真题,两种思路分享 前面有另一道面试题[Java实现]剑指offer53.1--在排序数组中查找数字(LeetCode34:在排序 ...
- leetcode-91-解码方法(动态规划和递归两种解法)
题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...
- POJ 1157 LITTLE SHOP OF FLOWERS (超级经典dp,两种解法)
You want to arrange the window of your flower shop in a most pleasant way. You have F bunches of flo ...
- Sort List[leetcode] 由归并排序的递归和循环,到本题的两种解法
归并排序能够有两种思路----top-down 和 bottom-up top-down: 递归实现,将数组分成两半.分别处理.再合并. 伪代码例如以下: split ( A[], l, r) { i ...
- POJ 1182食物链(分集合以及加权两种解法) 种类并查集的经典
题目链接:http://icpc.njust.edu.cn/Problem/Pku/1182/ 题意:给出动物之间的关系,有几种询问方式,问是真话还是假话. 定义三种偏移关系: x->y 偏移量 ...
- Big Event in HDU(杭电1171)(多重背包)和(母函数)两种解法
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- Go语言核心36讲(Go语言实战与应用二十六)--学习笔记
48 | 程序性能分析基础(上) 作为拾遗的部分,今天我们来讲讲与 Go 程序性能分析有关的基础知识. Go 语言为程序开发者们提供了丰富的性能分析 API,和非常好用的标准工具.这些 API 主要存 ...
- Docker 快速删除无用(none)镜像
Dockerfile 代码更新频繁,自然docker build构建同名镜像也频繁的很,产生了众多名为none的无用镜像. 分别执行以下三行可清除 docker ps -a | grep " ...
- java 数据类型:集合接口Collection之 Stream 的reduce方法
Stream 的reduce递归计算 import java.util.ArrayList; import java.util.Arrays; import java.util.List; impor ...
- JAVA 通过url下载图片保存到本地
//java 通过url下载图片保存到本地 public static void download(String urlString, int i) throws Exception { // 构造U ...
- summernote富文本的简单使用
官方地址:https://summernote.org/ html代码 <div class="summernote" id="summernote" & ...
- git修改账号密码
查看当前用户名和邮箱 git config user.name git config user.email 修改 git config --global user.name "新用户名&qu ...
- linux 设备文件的操作
文件:包含数据,具有属性,通过目录中的名字被标识, 可以从文件读数据,可以向文件写数据. 设备也支持文件的操作. 每个设备都被当作一个文件,具有文件名,i-节点号,文件所有者,权限位的集合,最新修改时 ...
- win7(X64)+wdk7驱动环境搭建
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist ----- 蓝 屏 警 告 --- 加载驱动的操作请在虚拟机中完成, 可以有效避免物理机蓝 ...
- 【LeetCode】361. Bomb Enemy 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力搜索 日期 题目地址:https://leetco ...
- 【LeetCode】983. 最低票价 Minimum Cost For Tickets(C++ & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetco ...