本文主要是介绍D - Buying Shovels 买铲子问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简单说下中文意思:
某人要买n把铲子,商店里有k种类型的包装,如:
包装1里面有1把铲子,
包装2里面有2把铲子,
……
包装k里面有k把铲子。
商店中每一种包装都有无数种。
题目要我们帮他提供买最少包装数量的方案,要求每一种包装中铲子数量是相同的,也就是说这k种类型的包装只挑一种类型购买。
举个例子:
比如买8把铲子,店里有7种不同类型的包装,则只需要买2袋就够了,买两袋4类型包装的,每一包里面有4把铲子。
AC代码:
#include <algorithm>
#include "math.h"
#include "iostream"
using namespace std;
int main(){int n,a,b;cin>>n;while (n--) {cin >> a >> b;if (b >= a) {cout << 1 << endl;continue;}if (b == 1) {cout << a << endl;continue;}// a>b的情况,i表示一袋中有i个int ans;// 记录买几袋for (int i = 1; i <= sqrt(a); i++) { // 一个数的因数一定是成对出现的if (a % i == 0) {if (a / i <= b) {ans = i;break;}if (i <= b) {// 有 a/i 种买法ans = a / i;}}}cout << ans << endl;}
}
这篇关于D - Buying Shovels 买铲子问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!