HDU1576 A/B (解法二)【试探法】
问题链接:HDU1576A/B
问题简述:参见上述链接。
问题分析:之前给出来一个用扩展欧几里德算法解本问题的方法,时间上则比较慢。试探法有时也是高效率的。
根据题意,输入的n=A%9973(没有输入A),A%B=0(A必能被B整除),B与9973互素(GCD(B,9973)=1)。
解题过程首先是建立方程,然后才能编写程序。
设x=(A/B)%9973(x是最终想计算的值,满足0<=x<=9972),则9973k+x=A/B(k为整数),得A=9973Bk+xB。
因为n=A%9973与A=9973Bk+xB,所以xB%9973=n,得xB=n+9973y,亦得xB-n=9973y。
故:(xB-n)%9973=0
对于上式,只需要用试探法就可以求得x。这样,程序运行速度相当快。
需要主意的是,变量类型为long时没有AC,改为long long就AC了,有点奇怪。也许评价系统所用编译版本的long类型不是64位的,才有这种情况。
程序说明:(略)
AC的C语言程序如下:
#include <stdio.h>int main(void)
{int t, i, j;long long n, b, a=9973;scanf("%d", &t);for(i=0; i<t; i++) {scanf("%lld%lld", &n, &b);for(j=0; j<a; j++)if((j * b - n) % a == 0) {printf("%d\n", j);break;}}return 0;
}
转载于:https://www.cnblogs.com/tigerisland/p/7564916.html
HDU1576 A/B (解法二)【试探法】相关推荐
- 从LeetCode 679. 24 Game--C++ 解法--二十四点 到穷举24点所有可能性-24点大全
从LeetCode 679. 24 Game–C++ 解法–二十四点 到穷举24点所有可能性 此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题 ...
- 隐形Euler方法的java程序_常微分方程的解法 (二): 欧拉(Euler)方法
上一节讲了 常微分方程的三种离散化 方法:差商近似导数.数值积分.Taylor 多项式近似. 目录 §2 欧拉(Euler)方法 2.1 向前 Euler 公式.向后 Euler 公式 ...
- HDU1106 排序(解法二)(废除!!!)
本文废除!!! 请点击以下的参考链接!!! 参考链接:HDU1106 排序[字符串+整数+排序]. 问题链接:HDU1106 排序. 问题简述:参见上述链接. 问题分析:这个程序的逻辑并不十分复杂,主 ...
- 【MPI编程】矩阵向量乘法--解法二(高性能计算)
简述 有留心过的朋友可能会发现,其实我没写过解法一. 因为解法一就是大家最直观的感受的一种解法. 将矩阵按照行划分,之后,再每个线程都用整个向量跟这个块做内积.之后,传回来一个数值. 这里的方法二, ...
- 常微分方程的解法 (二): 欧拉(Euler)方法
上一节讲了 常微分方程的三种离散化 方法:差商近似导数.数值积分.Taylor 多项式近似. 目录 §2 欧拉(Euler)方法 2.1 向前 Euler 公式.向后 Euler 公式 ...
- c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法二分法 4种语言...
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1:输入:matrix = ...
- HDU1013 POJ1519 Digital Roots(解法二)
该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的余数,若余数为0则结果为9. 问题链接:HDU1013 POJ1519 Digital Roots.入门练习题,用C语言编写 ...
- HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】
问题链接:HDU1163 Eddy's digital Roots. 问题简述:参见上述链接. 问题分析:计算n^n的数根,一要快,二要简单.使用快速模幂计算,加上数论中的九余数定理就完美了. 程序说 ...
- 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法二)
本着清晰明了易懂可以水两篇 的理念,笔者将这道题分两次发布.这是第二种解法. 第一种解法传送门→解法一+提交网址 因为解法1中有详细关于题目和输入输出格式等的介绍,这里就不过多赘述了. 分析: 一些初 ...
最新文章
- 转:在线框架引用 bootstrap/jq/jqmobile/css框架
- 再读《精通css》04:盒模型和空白边叠加
- Python档案袋(列表、元组、字典、集合 )
- libevent源码学习-----Reactor模型
- 关于Tomcat与MySQL连接池问题的详解
- 华为荣耀v20是android10,荣耀V20和荣耀V10买哪个好
- java redis 商品秒杀_使用redis秒杀出现产品超发现象求解?
- lambda 复制数组
- CodeIgniter辅助函数
- Kubernetes[3]-Server
- mysql连接池设计_数据库连接池(基于MySQL数据库)
- html与js二级菜单横排,JavaScript实现横向滑出的多级菜单效果
- Vue-cli 4.x 中的全局样式配置
- 逐一解读Gartner评出的11大信息安全技术
- go语言之进阶篇面向对象编程
- 1052. Linked List Sorting (25)再
- C语言日志库zlog的简单配置及使用
- 杭电ACM2030题
- 如何让计算机断开网络连接网络设置,电脑怎样设置定时断网,教您怎么设置
- 比亚迪F3 2009版手动豪华型车辆使用记录
热门文章
- Markdown 基础语法 记录 复制到 typora 中就可以看出来了呦,或者预览哟
- linux 多线程的基础 交通信号灯学习笔记 :信号详解
- html里五角星怎么打,html怎么显示五角星 几分给几个五角星
- 获取鼠标在盒子中的坐标
- 【 Linux 】创建一个文件夹并在此文件下创建一个c源文件
- Servlet - HTTP超文本传输协议
- 实用 | 从Apache Kafka到Apache Spark安全读取数据
- ORACLE时间函数(SYSDATE)深入理解
- 【log】12/11 checking project:(Laravel)snsTest
- hdu 3732(01背包转多重背包)