def compose_task_url(contest: str, contest_no: int, task: str) -> str:
    """
    与えられたコンテスト名、コンテスト番号、タスク名から
    問題ページのURLを生成する

    Parameters
    ----------
    contest : str
        コンテスト名. ABC, ARC or AGC
    contest_no : int
        コンテンストの番号
    task : str
        タスク名. A, B, C or D

    Returns
    ----------
    url : str
        対応する問題のURL
    """
    host = 'https://beta.atcoder.jp/'
    return host + 'contests/' + contest.lower()\
                + '{:03d}'.format(contest_no)\
                + '/tasks/' + contest.lower()\
                + '{:03d}'.format(contest_no)\
                + '_' + task.lower()