时间:1s 空间:128M
题目描述:
从1到n有n块砖需要刷油漆,砖的编号被a整除的要被刷成红色,被b整除的被刷成蓝色,同时被a,b整除的既可以被刷成红色,也可以被刷成蓝色。等你刷完后,对于每块红色的砖,老板会奖励给你p个巧克力,对于每块蓝色的砖,老板奖励q个巧克力,问你最多能得到多少巧克力
输入格式:
输入五个整数n,a,b,p,q
输出格式:
输出一个整数
样例输入1:
5 2 3 12 15
样例输出1:
39
样例输入2:
20 2 3 3 5
样例输出2:
51
约定:
1<=n,a,b,p,q<=10^9
提示:
本题主要是抓住同时被A、B整除的砖块,让它们得到更多的巧克力。所以要求最小公倍数。可以用C++的STL轻松解决。具体代码如下:
#include#include #include #include #include #include using namespace std ;int main ( ){ long long n , a , b , p , q ; scanf ( "%lld %lld %lld %lld %lld" , & n , & a , & b , & p , & q ) ; long long k = __gcd ( a , b ) ; //求最大公因数 k = a * b / k ; //求最小公倍数 k = n / k ; a = ( n / a - k ) * p ; b = ( n / b - k ) * q ; k = max ( p , q ) * k ; printf ( "%lld" , a + b + k ) ; return 0 ;}
相关链接:
XJOI 题解小全:
XJOI 1210 二项式展开 题解: