求调
  • 板块题目总版
  • 楼主cola0827
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/2/7 11:56
  • 上次更新2025/2/7 15:23:15
查看原帖
求调
1447413
cola0827楼主2025/2/7 11:56

造房子

题目背景

洛谷要去造房子了。

题目描述

洛谷有 aa 个 A 材料和 bb 个 B 材料,造 ii 层楼需要 ii 个 A 材料与 ii 个 B 材料。

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

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

输入格式

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

输出格式

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

样例 #1

样例输入 #1

1 2 3

样例输出 #1

2

样例 #2

样例输入 #2

1 5 3

样例输出 #2

2

提示

【样例 1 说明】

pigstd 买 22 个 A 材料和 11 个 B 材料后就有 33 个 A 材料和 33 个 B 材料,最多可以建 22 层楼的房子。

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

【样例 2 说明】

pigstd 买 33 个 A 材料后就有 44 个 A 材料和 55 个 B 材料,最多可以建 22 层楼的房子。

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

【数据规模与约定】

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

数据点编号满足的条件
14,221-4,22c=0c = 0
58,215-8,21a,b,c103a,b,c \le 10^{3}
9129-12a,b,c106a,b,c \le 10^{6}
132013-20a,b,c1012a,b,c \le 10^{12}

蒟蒻的代码:

#include <iostream>
#include <cstdio>
#define var long long
using namespace std;
int p[1001];


int main(void)
{
    var a, b, c;
    cin >> a >> b >> c;
    var i;
    for(i = 0;; i++)
    {
        if(a < i + 1 || b < i + 1)
        {
            break;
        }
        else
        {
            a -= i + 1;
            b -= i + 1;
        }
    }
    while(true)
    {
        if(c <= 0)
        {
            break;
        }
        else if(a <= b)
        {
            a++;
            c--;
        }
        else
        {
            b++;
            c--;
        }
    }
    for(;; i++)
    {
        if(a < i + 1 || b < i + 1)
        {
            break;
        }
        else
        {
            a -= i + 1;
            b -= i + 1;
        }
    }
    cout << i << endl;
    return 0;
}

6个测试点TLE

P6784

2025/2/7 11:56
加载中...