列表

详情


NC51489. Math

描述

给定三个数:x, y, z;
找出一个数v使得:x|v,  y|v,  z|v
那么v/x+v/y+v/z最小可能是多少?

说明:a|b表示a整除b。

输入描述

三个整数x,y,z(1≤x,y,z≤1e8)

输出描述

一个数,表示答案。

示例1

输入:

1 2 4

输出:

7

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 508K, 提交时间: 2019-07-26 20:40:27

#include<bits/stdc++.h> 
using namespace std;
__int128 x,y,z,a,b;
int main() 
{
	scanf("%lld%lld%lld",&x,&y,&z);
	a=__gcd(x,y);
	a=(x*y)/a;
	b=__gcd(a,z);
	b=(a*z)/b;
	printf("%lld\n",b/x+b/y+b/z);
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 30ms, 内存消耗: 3428K, 提交时间: 2019-07-26 15:40:50

def di(a,b):
  a1 = a
  b1 = b
  c = a%b
  while c>0:
    a=b
    b=c
    c=a%b
  return a1*b1//b

x,y,z=map(int ,input().split())

d=di(di(x,y),z)
k=d//x+d//y+d//z
print(k)

上一题