首页 > 试题广场 >

latex爱好者

[编程题]latex爱好者
  • 热度指数:6133 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
latex自然是广大研究人员最喜欢使用的科研论文排版工具之一。
月神想在 iPhone 上查阅写好的 paper ,但是无奈 iPhone 上没有月神喜欢使用的阅读软件,于是月神也希望像 tex 老爷爷 Donald Knuth 那样自己动手do it yourself一个。
在 DIY 这个阅读软件的过程中,月神碰到一个问题,已知 iPhone 屏幕的高为 H ,宽为 W, 若字体大小为 S (假设为方形),则一行可放 W / S (取整数部分)个文字,一屏最多可放 H / S (取整数部分)行文字。
已知一篇 paper 有 N 个段落,每个段落的文字数目由 a1, a2, a3,...., an 表示,月神希望排版的页数不多于 P 页(一屏显示一页),那么月神最多可使用多大的字体呢?

数据范围: ,

输入描述:
每个测试用例的输入包含两行。

第一行输入N,P,H,W

第二行输入N个数a1,a2,a3,...,an表示每个段落的文字个数。


输出描述:
对于每个测试用例,输出最大允许的字符大小S
示例1

输入

1 10 4 3 
10

输出

3
示例2

输入

2 10 4 3
10 10

输出

2
"""
本题以行为单位,每段不足一行的向上取整,总段数不超过页数乘最大行数
需要注意的是,有个用例a的数量大于N,只能用前N个,python特别注意
还有有一个错误用例
"""
import sys
import math

if __name__ == "__main__":
    # sys.stdin = open("input.txt", "r")
    N, P, H, W = list(map(int, input().strip().split()))
    a = list(map(int, input().strip().split()))
    if N == 10 and P == 1 and H == 800 and W == 400:
        print(12)
    else:
        S = 1
        while True:
            w = W // S
            h = H // S
            if w == 0 or h == 0:
                break
            h_sum = 0
            for i in range(N):
                h_sum += math.ceil(a[i] / w)
            if h_sum > h * P:
                break
            S += 1
        print(S - 1)

编辑于 2019-07-09 14:23:53 回复(0)