SEERC15 求一个正整数n,使得a+n和b+n的LCM值最小
来源:互联网 发布:sqlserver 2005 dev 编辑:程序博客网 时间:2024/05/16 16:21
http://codeforces.com/gym/100818 有一个坑点:国外的自然数居然是不包括0的!!!
#include<bits/stdc++.h>using namespace std;vector <long long> v;long long gcd(long long x, long long y){if (y == 0)return x;return gcd(y, x%y);}int main(){//freopen("111.txt","r",stdin);long long a, b,tt=-1;while (cin >> a >> b){if (a > b)swap(a, b);v.clear();if (a == b){cout << 1 << endl;continue;}long long n = b - a; //不管怎么加,两个数的差值是固定的,所以有用? for (long long i = 1; i*i <= n; ++i){if (n%i == 0){v.push_back(i); //存放所有约数 v.push_back(n/i);//存放所有约数 }}long long ans = 2000000000000000005; //这个数要比10^18大一点(因为n肯定大于0,所以最终的两个数可能会大于10^9,陷阱啊) long long minn = 200000000000;for (int i = 0; i < v.size(); ++i){long long x = (v[i] - a%v[i]); //靠猜/凑的? x是最后n的可能值 long long y = gcd(a + x, b + x);if (((x + a) / y)*(b + x) < ans){ans = ((x + a) / y)*(b + x);minn = x;}else if (((x + a) / y)*(b + x) == ans&& x<minn){minn=x;}}cout <<minn << endl;}return 0;}
1 0
- SEERC15 求一个正整数n,使得a+n和b+n的LCM值最小
- 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。
- 输入一个正整数n,输出一个最小正整数m,使得m的各位乘积等于n
- 【codeforces 27 E】【反素数】【给一个数n,求一个最小的正整数,使得它的因子个数为n】
- 输入一个正整数n,求第n小的质数
- 确定最小的正整数n,使得n!的结尾恰好有1987个0
- 给一个正整数n,找出个数最小的平方数让他们的和等于n
- 给定一个正整数n,找到比n小的完美平方数相加和等于n的最小数目。
- 求a^b前n位和后n位
- 求正整数N的平方根
- 对一切正整数n都成立的最小正整数a的值
- 求n的阶乘问题。输入一个正整数n,输出n!
- C语言编程:求n的阶乘问题。输入一个正整数n,输出n!
- 计算出一个最小的n,使得Sn>K
- 蓝桥杯题目 输入一个正整数n,输出n!的值。
- 两个数组a[n],b[n]重新排列后,两数组的和的差最小
- a^n - b^n
- 找到大于一个正整数N的最小2的次幂数
- Git基本常用命令
- UVA 11029 Leading and Trailing
- 扉页
- 【Android】【USB】USB相关开发
- Java Web学习笔记——Cookie&Session
- SEERC15 求一个正整数n,使得a+n和b+n的LCM值最小
- NSCondition的用法
- 文章标题
- 多游标嵌套带参数
- 使用BAPI_CONTRACT_CREATE创建采购合同框架协议
- HTML 占满工作区
- ios开发创建证书和描述文件的整个流程
- TextView属性大全
- activity的生命周期