造房子

造房子 ⁡ \operatorname{造房子}

题目链接: luogu P6784 ⁡ \operatorname{luogu\ P6784} luogu P6784

题目背景

pigstd 要去造房子了。

题目

pigstd 有 a a a 个 A 材料和 b b b 个 B 材料,造第 i i i 层楼需要 i i i 个 A 材料与 i i i 个 B 材料。

但是 pigstd 觉得房子不够高,于是他拿出了 c c c 块钱,每块钱都可以用来买 1 1 1 个 A 材料或者 1 1 1 个 B 材料。

现在 pigstd 想知道,他最多能建多少层楼的房子。

输入

第一行三个整数 a , b , c a,b,c a,b,c

输出

一行一个整数,表示 pigstd 最多能建多少层楼的房子。

样例输入1

1 2 3

样例输出1

2

样例解释1

pigstd 买 2 2 2 个 A 材料和 1 1 1 个 B 材料后就有 3 3 3 个 A 材料和 3 3 3 个 B 材料,最多可以建 2 2 2 层楼的房子。

(花费 1 + 2 1+2 1+2 个 A 材料和 1 + 2 1+2 1+2 个 B 材料)

样例输入2

1 5 3

样例输出2

2

样例解释2

pigstd 买 3 3 3 个 A 材料后就有 4 4 4 个 A 材料和 5 5 5 个 B 材料,最多可以建 2 2 2 层楼的房子。

(花费 1 + 2 1+2 1+2 个 A 材料和 1 + 2 1+2 1+2 个 B 材料)

数据范围

对于 100 % 100\% 100% 的数据, 0 ≤ a , b , c ≤ 1 0 12 0 \le a,b,c \le 10^{12} 0a,b,c1012

数据点编号满足的条件
1 − 4 , 22 1-4,22 14,22 c = 0 c = 0 c=0
5 − 8 , 21 5-8,21 58,21 a , b , c ≤ 1 0 3 a,b,c \le 10^{3} a,b,c103
9 − 12 9-12 912 a , b , c ≤ 1 0 6 a,b,c \le 10^{6} a,b,c106
13 − 20 13-20 1320 a , b , c ≤ 1 0 12 a,b,c \le 10^{12} a,b,c1012

思路

这道题就暴力模拟。

就从小到大枚举房子的高度,然后算出 A 材料和 B 材料要补充多少件,如果两个要补充的数量加起来超过了 c c c,那就不能盖这么高,输出当前的高度 − 1 -1 1

代码

#include<cstdio>
#include<iostream>
#define ll long long

using namespace std;

ll a, b, c, ans, now;
ll an, bn;

int main() {
	scanf("%lld %lld %lld", &a, &b, &c);
	
	while (1) {
		ans++;
		now += ans;
		an = max((ll)0, now - a);
		bn = max((ll)0, now - b);
		if (an + bn > c) {
			ans--;
			printf("%lld", ans);
			return 0;
		}
	}
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值