def put_A_data(a_num, username, text, cpu_sec=None, mem_byte=None, misc_text=None):
    "回答データをデータベースに格納する"
    msg = ""
    # 出題データを取り出す
    ret, q_text = get_Q_data_text(a_num)
    if not ret:
        msg = "Error in Q%d data: " % a_num + q_text
        return False, msg
    # 重複回答していないかチェック
    ret, q, root = get_A_data(a_num, username)
    if ret==True and q is not None:
        msg += "ERROR: duplicated answer\n";
        return False, msg
    # 回答データのチェックをする
    judges, msg = numberlink.check_A_data(text, q_text)
    q = 0.0
    if judges[0] != True:
        msg += "Error in answer A%d\n" % a_num
        check_A = False
    else:
        check_A = True # 正解
        q = judges[1]
    # 解の品質
    msg += "Quality factor = %1.19f\n" % q
    # データベースに登録する。不正解でも登録する
    a = Answer( parent = root,
                id = str(a_num),
                anum = a_num,
                text = text,
                owner = username,
                cpu_sec = cpu_sec,
                mem_byte = mem_byte,
                misc_text = misc_text,
                result = msg[-1499:],  # 長さ制限がある。末尾のみ保存。
                judge = int(check_A),
                q_factor = q )
    a_key = a.put()
    return True, msg