XTU 1220 A+B Again
来源:互联网 发布:python 财经数据接口 编辑:程序博客网 时间:2024/05/29 17:41
A+B Again
Accepted : 34 Submit : 337Time Limit : 1000 MS Memory Limit : 65536 KB题目描述
上次趣味赛小明的a+b坑了不少不喜欢思考的同学,小明为了表示歉意, 这次出了道简单的a+b给大家当签到题,希望大家能开心刷题。 那么,题目来了!!!
求使得b/(a+x)为整数的最小正整数x的值。
输入
第一行是一个整数K(K≤10000),表示样例的个数。 以后每行一个样例,为两个正整数a,b(1≤a,b≤108)。
输出
每行输出一个样例的结果,如果不存在这样的x,输出-1。
样例输入
31 21 31 4
样例输出
121
解题思路:题目很简单,稍微化下简,就可以看出目就是求b的因子减去a的最小正整数,如果没有就输出-1。。
假设:b/(a+x)=n
nx=b-na
x=b/n-a
代码如下:
#include <stdio.h>#include <math.h>#include <algorithm>#include <string.h>#define maxn 100001;using namespace std;int main(){int a,b,t;scanf("%d",&t);while(t--){scanf("%d %d",&a,&b);int s=(int)sqrt(b),ans=111111111,f=0;if(b<=a) {printf("-1\n"); continue;} for(int i=s;i>=1;i--) { if(b%i!=0) continue; if(b/i-a>0){ans=min(ans,b/i-a); f=1;}///因为i为一个因子,那么b/i也是一个因子 if(i-a>0){ans=min(ans,i-a); f=1;}///寻找最小的 } if(f) printf("%d\n",ans); else printf("-1\n");}return 0;}
0 0
- XTU 1220 A+B Again
- XTU 1194 A+B
- XTU 1178A+B
- XTU的A+B
- A + B Again
- HDU A + B Again
- HDU_2057 A + B Again
- 4629. A+B Again
- 【2057 A + B Again ?】
- hdu2057 A + B Again
- hdoj2057 A+B Again
- 2057 A + B Again
- hdu2057 A + B Again
- A + B Again
- A + B Again
- hdoj A + B Again
- HDU2057 A + B Again
- A + B Again
- 正则表达式总结
- 热更新Tinker研究(六):TinkerPatchPlugin
- Windows bat脚本之for循环之 一
- Android Studio NDK及so文件开发
- Android AOP实现原理之字节码插桩(一)
- XTU 1220 A+B Again
- java反射
- 组件化开发中引用aar包引起的jar包冲突问题
- js基本语法
- oracle dblink
- js数据类型与内建对象
- Log4j使用笔记(二):每天生成一个日志文件、按日志大小生成文件
- position为absolute的居中问题
- windows下Mysql5.7.11免安装模式下不能无密登录 Access denied for user 'root'@'localhost' (using password: NO)