HDU 1576 A/B
2016-03-25 14:43
288 查看
题意:
[align=left]Problem Description[/align]
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
[align=left]想法:设X=(A/B)%9973 ==> A/B=k*9973+X (k为正整数) ==> A=k*9973*B+X*B[/align]
[align=left]又因为n=A%9973 ==> A=p*9973+n (p为正整数) ==> p*9973+n=k*9973*B+X*B ==> p*9973-k*9973*B=X*B-n 从这个式子可以看出左半边可以被9973整除,所有可得(X*B-n)%9973=0;[/align]
[align=left]
[/align]
[align=left]Problem Description[/align]
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
[align=left]想法:设X=(A/B)%9973 ==> A/B=k*9973+X (k为正整数) ==> A=k*9973*B+X*B[/align]
[align=left]又因为n=A%9973 ==> A=p*9973+n (p为正整数) ==> p*9973+n=k*9973*B+X*B ==> p*9973-k*9973*B=X*B-n 从这个式子可以看出左半边可以被9973整除,所有可得(X*B-n)%9973=0;[/align]
[align=left]
[/align]
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n; unsigned long long b; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%lld",&n,&b); int res; for(int i=0;i<=9973;i++) { int kk=(i*(b%9973)-n+9973)%9973; if(kk==0) { res=i; break; } } printf("%d\n",res); } return 0; }
相关文章推荐
- 使用nginx做反向代理,后端tomcat日志获取真实ip解决方案
- 移动端HTML5实现文件上传功能【附代码】
- 【学渣笔记】Scala XML操作手册
- JavaBean中的get/set 的命名规范
- EXTJS 中 anchor 的用法
- js 取值
- C++ 枚举进程信息,并结束指定进程
- 前端学习计划
- python脚本自动监视重启tomcat进程
- 基于universalimageloader实现的图片加载控件BlurImageView
- 读书笔记:Ajax/REST架构对于侵入式Web应用的优势
- css圆角
- 正则表达式匹配与查找
- linux logstash配置java环境
- hadoop在windows下的环境搭建
- Django Url编码问题
- flv转mp4选项设置
- 今天遇到的一个小坑,js传参 转义符(\)的问题
- 做一个合格的程序猿之浅析Spring AOP源码(十六) 分析ProxyFactory
- VS2012 Qt5 winpcap win64 抓包工具 编写与设计 http协议解析