め,めーるさーば??な人が Gmail(iPad) から東工大のメールを見れるようにした話

こんばんは.tax_free です.

    新居で椅子がない生活を2週間しています.椅子がないと,勉強と作業のモチベがあがらない...

 

    東工大から配られた m.titech.ac.jp ドメインのメールを iPadGmail から見れるようにした話です.

細かい話は公式サイトを確認してください.

portal.titech.ac.jp

 

    iPad での設定をするために必要なものを取ります.

    まず Tokyo Tech Portal にログインします.

f:id:taxfree_python:20220408161633p:plain

この画面が出てきたら,「メール関連サービス」の「共通メール認証ID」に進みます.そうしたら,新規発行ボタンを押して表示された共通メール認証 ID をコピーします.

 

    ここから iPad の操作になります.

f:id:taxfree_python:20220408162325j:plain

 

Gmail のアカウント管理画面から「別のアカウントを追加」をタップ

 

f:id:taxfree_python:20220408162611j:plain

 

「その他(IMAP)」を選択

 

f:id:taxfree_python:20220408162727j:plain

 

ここに @m.titech.ac.jp で終わるメールアドレスを入れます.

 

f:id:taxfree_python:20220408163133j:plain

 

次に受信サーバーの設定をします.

ユーザー名に Tokyo Tech Portal で発行した共通メール認証 ID を貼り付けます.

パスワードは Tokyo Tech Portal にログインするときに使うパスワードと同じです.

IMAP サーバーは「mailv3.m.titech.ac.jp」と入力します.

残りの項目は写真の通りで大丈夫です.

 

f:id:taxfree_python:20220408163742j:plain

 

送信サーバーのユーザー名とパスワードは,受信サーバーと同じです.

SMTP サーバーは「smtpv3.m.titech.ac.jp」を入力します.

残りの項目は写真のままで大丈夫です.

 

f:id:taxfree_python:20220408164139j:plain

 

ユーザー名を設定します.

 

以上で操作は終わりです.

 

最後にもう一度公式ページを貼っておきます.

portal.titech.ac.jp

東京工業大学 情報理工学院 総合型選抜 合格なんとか

令和4年度 東京工業大学 情報理工学院 総合型選抜に合格したので,そのレポートです.日本語が下手なのは許してくれ.

東京工業大学の総合型選抜

東京工業大学(東工大)の説明です.

「工業大か!高校時代遊びすぎたんだろ!でも浪人しなくてよかったな!」
〜 東京工業大学 について、伯父
「We will make Okayama Great again.」
〜 東京工業大学 について、あるOB

東京工業大学(とうきょうこうぎょうだいがく)とは、東京都目黒区岡山県[1]大岡山(英:Great Okayama)に本拠地を置く自然公園の付属施設の一つである。また、神奈川県港区田町、国外ではタイフィリピン中国にも付属施設がある。

引用元

 

総合型選抜は,いわゆるAO入試と同じです.各学院の具体的な説明は,下のページ(令和4年度版)を確認してください.

admissions.titech.ac.jp

 

情報理工学院の総合型選抜

情報理工学院は,環境・社会理工学院Cの総合型選抜と同様に筆記試験がありません.課されるのは,

  • 共通テスト
  • 志望理由書
  • 活動実績報告書
  • 面接

です.共通テストは,"概ね"650点以上とれば大丈夫です.

 

出願理由

9月頃までは,理学院の学校推薦型選抜に出す予定でした.しかし,理学院は科学メダリストが無制限に出願できます.その勢力に「駆逐される」と思い,10月の中頃に情報理工学院の総合型選抜へシフトしました.加えて,情報理工学院は筆記テストがないので,対策にかかる時間を軽減できると思っていました.思っていました.大事なことなので二回言いました.

志望理由書

選考に大きく関わることはないと思うので,無難に書きました.今までやってたこと+今後やりたいことを短くまとめれば800字くらいになると思います.日本語に自信がないので,担任に見てもらいました.

活動実績報告書

wallprimeの自動化(下の記事)を改善したプログラムについて書きましたが,結果的にほとんど新規開発になりました.ほとんど新規開発になった結果,レポートを書くのに250時間以上使ったと思います.前期は切ってた.

qiita.com

報告書を書くことになる時期は秋の冠模試の時期です.情報理工学院 総合型選抜を考えてる人は,それを加味したスケジュールを立てることをおすすめします.私は,東工大,名古屋オープン,東大実戦,英検準1級があったので,ギチギチの日程になってました.

報告書本体は,LaTeX+VScodeで書きました.ほとんどの人は二段組で書いた方が見栄えが良くなると思います.加えて,二段組にするとより多く書くことができます.私は,上下左右の余白+二段組+表の配置を調整して,なんとか4枚以内にしていました.4枚は少ない!

報告書を知り合いの方に見てもらいアドバイスを貰いました.数学の答案添削と同じで,自分以外の人に見てもらうことは大切です.内容を深く知っている必要はないので,友達がいれば勇気を出して見てもらいましょう.有益な意見をくれると思います.

 

共通テスト(某受験報告風)

1月2,3日に解いたKパックで649/900を取り,足切りの恐怖を感じる.

 

一日目

  • 地理 : 残り30秒で間違いに気付いたが,受験番号の確認を優先して修正を後回しにした結果-3点する.テスト終了後に受験番号を確認する時間が与えられることを知らされ,悲しみとともに共通テストが始まる.
  • 国語 : 現代文は,まぁまぁまぁ...地理の次に対策した古漢がなんも分からん状態.地理のこともあり不安になる.
  • 英語R : 時間は5分くらい余った余らせた.去年と色々違うな~と思う.
  • 英語L : なんもわからん.

文系科目は良くないな,と思い一日目を終える.

二日目

  • 数学1A : ???.時間が足りません.
  • 数学2B : 1Aより難しくないか?
  • 化学 : 55分くらいで解く.余った時間で物理を読んで,回収時間で考察する.
  • 物理 : 問題数が少ないような.そして問題も簡単じゃないか?

物理の手応えが良かったので,わずかな希望を持って帰宅する.お風呂に入って採点する.

f:id:taxfree_python:20220222221701p:plain

ん??? 6..4.....9? Kパックのフラグを回収してしまった....

地理の3点を嘆く.友達と地理の解説会をして,通話しながら麻雀打って寝た.

 

第1段階選抜の結果発表(某受験報告風)

(-185分)数学の過去問を解いてたので17:30くらいにページを確認する.まだ出てない.17:00予定だったので遅れているらしい.(-5分)周りの人間内で,受験entertainmentが流行っていたので,合格確認をmeetを繋いで画面共有して確認するエンタメをする.(+1分)受験番号が縦に並んでいることに気づかず上の2行くらいを見て大分焦る.下までスクロールすると自分の番号があることに気づき深く息を吸う.

受かってたから良かったけど,落ちてたらどんな空気になってたんだろう...

 

(+180分)飛行機を取る.

 

第2段階選抜(面接)(某受験報告風)

(-3日)他の学院と違って,対策できることが5分のプレゼンと来そうな質問を考えることの2つしかないので,リストアップして準備する.前期の倍率を唱えながら取り組む.

何も準備しないで喋ると11分くらいかかったので,台本的なものを作りながら頭の整理をすることに.

 

(-3.5時間)起床.シャワーを浴びて,鏡の前で最後の練習.

(-30分)間違えて控室ではなく,面接室の方に入る.先生方に注意?され焦る.

(+0分)面接室へ.緊張よりもワクワクが大きくなる.最初は,軽く自己紹介.「沖縄から来たこと」と「昨日は寒かったねー」という話をする.

(+2分)5分のプレゼンをする.練習した成果か,詰らずに説明できた.時間はそこまで厳密に測ってなさそう.

(+7分)発表が終わると質問コーナーが始まる.手応えが小さい質問が1つ2つあったが,大きく失敗することはなかった,と思う.

(+30分くらい?)帰るときに,CERNのかばんを使ってることで軽く雑談をする.

(+30分くらい?)建物を出る.楽しかったな~,という気持ちでいっぱいになる.

(+たくさん)落ちてるんじゃないかと不安になる.

 

事前情報と違ったこと,知らなかったこと

  • 机の上に報告書が置かれたなかった.
  • 面接中に飲みものを飲むことは許可されている.
  • 報告書以外からも聞かれることがある.志望理由書からも聞かれた.
  • 面接の雰囲気は,過度に緊張しているわけではない.面接官が笑うこともあった.

 

第2段階選抜の結果発表(某受験報告風)

(11:55くらい)1週間前と同じく数学の過去問を解いたけど,我慢できず切り上げてスマホで確認する.まだ,12:00になってないのに結果が出ていること気づく.無心で見る.今度は学院ごとに分かれてることに気づかず,工学院の方を見て,落ちたのか...になる.見ている場所が間違えていることに気づく.情報理工学院の方に番号がある!.うれしい.各所に報告する

 

最後に

結果が出てから1週間ほど経った今日この頃,私が情報理工学院に合格していいのかという気持ちが湧いてきました.

質問がある人は,@taxfree_pythonのDMに送ってください.

 

奨学金のはなし

東工大を志望している人で,扶養している親が大卒でない場合は下の奨学金の募集要項を見てみることをおすすめします.

www.titech.ac.jp

 

 

 

 

ABC185の感想.Python

お昼にあったJOIで散々な結果だったのでABCでリベンジしたかったが...

A - ABC Preparation

listで受けとって,min

from sys import stdin
input = stdin.readline

l = list(map(int, input().strip().split()))

print(min(l))

B - Smartphone Addiction

バグらせた.nと残充電量は別で持ちましょう.

from sys import stdin
input = stdin.readline

n, m, t = map(int, input().strip().split())
ab = [list(map(int, input().strip().split())) for _ in range(m)]

battery = n
battery -= ab[0][0]
if battery <= 0:
    print('No')
    quit()

battery = min(n, battery + ab[0][1] - ab[0][0])
for i in range(1, m):
    time = ab[i][0] - ab[i-1][1]
    charge = ab[i][1] - ab[i][0]
    battery -= time
    if battery <= 0:
        print('No')
        quit()
    else:
        battery = min(n, battery + charge)

if battery - (t - ab[-1][1]) <= 0:
    print('No')
else:
    print('Yes')

C - Duodecim Ferra

DPでいけると思ったけど,遷移式が立てれず...

D - Stamp

青色のマスを赤色にすることはできない.よって,隣接する青色のスタンプ同士の距離の最小値が kになるので,数える.そのときに,間にある白のマスの数を数えて,区間ごとに kで割って足す.

from sys import stdin
input = stdin.readline
inf = float('inf')

n, m = map(int, input().strip().split())
a = list(map(int, input().strip().split()))

if m == 0:
    print(1)
    quit()

a.sort()
if a[0] == 1:
    k = inf
    white = []
else:
    k = a[0] - 1
    white = [a[0] - 1]

for i in range(1, m):
    tmp = a[i] - a[i - 1] - 1
    white.append(tmp)
    if tmp != 0:
        k = min(tmp, k)

if a[-1] != n:
    white.append(n - a[-1])

ans = 0
length = len(white)
for i in range(length):
    if white[i] % k == 0:
        ans += white[i] // k
    else:
        ans += (white[i] // k) + 1

print(int(ans))

感想

Fはxorを知っていれば解けそう?

PythonでJOI難易度6を埋める #25

4 - JOIポスター (JOI Poster)

数学感がある問題.参考にした提出細かい条件

from sys import stdin
input = stdin.readline

n, w, h = map(int, input().strip().split())
xy = [list(map(int, input().strip().split())) for _ in range(n)]

ans = 0
for i in range(n):
    for j in range(n):
        for k in range(n):
            for l in range(n):
                if len(set((i, j, k, l))) != 4:
                    continue
                o1 = (xy[i][0] - xy[j][0]) ** 2 + (xy[i][1] - xy[j][1]) ** 2
                if not ((w - xy[i][0]) ** 2 < o1 or xy[i][0] ** 2 < o1 or (h - xy[i][1]) ** 2 < o1 or xy[i][1] ** 2 < o1):
                    o2 = (xy[k][0] - xy[l][0]) ** 2 + (xy[k][1] - xy[l][1]) ** 2
                    d = (xy[i][0] - xy[k][0]) ** 2 + (xy[i][1] - xy[k][1]) ** 2
                    if o1 - o2 - d >= 0 and o2 * d * 4 < (o1 - o2 - d) ** 2:
                        ans += 1

print(ans)

PythonでJOI難易度6を埋める #24

A - JOI紋章(JOI Emblem)

実装の面倒さで難易度6にいる.私は気合で場合分けしました()

from sys import stdin
input = stdin.readline

m, n = map(int, input().strip().split())
flag = [input().strip() for _ in range(m)]
crest = [input().strip() for _ in range(2)]

def check(f1, f2, f3, f4, cre):
    if f1 == cre[0][0] and f2 == cre[1][0] and f3 == cre[0][1] and f4 == cre[1][1]:
        return 1
    else:
        return 0

tmp = 0
for i in range(m - 1):
    for j in range(n - 1):
        if check(flag[i][j], flag[i + 1][j], flag[i][j + 1], flag[i + 1][j + 1], crest):
            tmp += 1

char = ['J', 'O', 'I']
ans = 0
for i in range(m):
    for j in range(n):
        if i == 0 and j == 0: #左上
            '''
            | 1 | 3 |
            | 2 | 4 |
            '''
            f1 = flag[i][j]
            f2 = flag[i + 1][j]
            f3 = flag[i][j + 1]
            f4 = flag[i + 1][j + 1]
            if check(f1, f2, f3, f4, crest):
                continue
            for k in char:
                if k == f1:
                    continue
                if check(k, f2, f3, f4, crest):
                    ans = max(tmp + 1, ans)

        elif i == m - 1 and j == n - 1: #右下
            '''
            | 1 | 3 |
            | 2 | 4 |
            '''
            f1 = flag[i - 1][j - 1]
            f2 = flag[i][j - 1]
            f3 = flag[i - 1][j]
            f4 = flag[i][j]
            if check(f1, f2, f3, f4, crest):
                continue
            for k in char:
                if k == f4:
                    continue
                if check(f1, f2, f3, k, crest):
                    ans = max(tmp + 1, ans)

        elif i == 0 and j == n - 1: #右上
            '''
            | 1 | 3 |
            | 2 | 4 |
            '''
            f1 = flag[i][j - 1]
            f2 = flag[i + 1][j - 1]
            f3 = flag[i][j]
            f4 = flag[i + 1][j]
            if check(f1, f2, f3, f4, crest):
                continue
            for k in char:
                if k == f3:
                    continue
                if check(f1, f2, k, f4, crest):
                    ans = max(tmp + 1, ans)

        elif i == m - 1 and j == 0: #左下
            '''
            | 1 | 3 |
            | 2 | 4 |
            '''
            f1 = flag[i - 1][j]
            f2 = flag[i][j]
            f3 = flag[i - 1][j + 1]
            f4 = flag[i][j + 1]
            if check(f1, f2, f3, f4, crest):
                continue
            for k in char:
                if k == f2:
                    continue
                if check(f1, k, f3, f4, crest):
                    ans = max(tmp + 1, ans)

        elif i == 0 and 0 < j < n - 1: #上
            '''
            | 5 | 1 | 3 |
            | 6 | 2 | 4 |
            '''
            f1 = flag[i][j]
            f2 = flag[i + 1][j]
            f3 = flag[i][j + 1]
            f4 = flag[i + 1][j + 1]
            f5 = flag[i][j - 1]
            f6 = flag[i + 1][j - 1]
            if check(f1, f2, f3, f4, crest) or check(f5, f6, f1, f2, crest):
                continue
            for k in char:
                if k == f1:
                    continue
                if check(k, f2, f3, f4, crest) and check(f5, f6, k, f2, crest):
                    ans = max(tmp + 2, ans)
                elif check(k, f2, f3, f4, crest) or check(f5, f6, k, f2, crest):
                    ans = max(tmp + 1, ans)

        elif 0 < i < m - 1 and j == 0: #左
            '''
            | 5 | 6 |
            | 1 | 3 |
            | 2 | 4 |
            '''
            f1 = flag[i][j]
            f2 = flag[i + 1][j]
            f3 = flag[i][j + 1]
            f4 = flag[i + 1][j + 1]
            f5 = flag[i - 1][j]
            f6 = flag[i - 1][j + 1]
            if check(f1, f2, f3, f4, crest) or check(f5, f1, f6, f3, crest):
                continue
            for k in char:
                if k == f1:
                    continue
                if check(k, f2, f3, f4, crest) and check(f5, k, f6, f3, crest):
                    ans = max(tmp + 2, ans)
                elif check(k, f2, f3, f4, crest) or check(f5, k, f6, f3, crest):
                    ans = max(tmp + 1, ans)

        elif i == m - 1 and 0 < j < n - 1: #下
            '''
            | 1 | 3 | 5 |
            | 2 | 4 | 6 |
            '''
            f1 = flag[i - 1][j - 1]
            f2 = flag[i][j - 1]
            f3 = flag[i - 1][j]
            f4 = flag[i][j]
            f5 = flag[i - 1][j + 1]
            f6 = flag[i][j + 1]
            if check(f1, f2, f3, f4, crest) and check(f3, f4, f5, f6, crest):
                continue
            for k in char:
                if k == f4:
                    continue
                if check(f1, f2, f3, k, crest) and check(f3, k, f5, f6, crest):
                    ans = max(tmp + 2, ans)
                elif check(f1, f2, f3, k, crest) or check(f3, k, f5, f6, crest):
                    ans = max(tmp + 1, ans)

        elif 0 < i < m - 1 and j == n - 1: #右
            '''
            | 3 | 6 |
            | 2 | 5 |
            | 1 | 4 |
            '''
            f1 = flag[i + 1][j - 1]
            f2 = flag[i][j - 1]
            f3 = flag[i - 1][j - 1]
            f4 = flag[i + 1][j]
            f5 = flag[i][j]
            f6 = flag[i - 1][j]
            if check(f3, f2, f6, f5, crest) and check(f2, f1, f5, f4, crest):
                continue
            for k in char:
                if k == f5:
                    continue
                if check(f3, f2, f6, k, crest) and check(f2, f1, k, f4, crest):
                    ans = max(tmp + 2, ans)
                elif check(f3, f2, f6, k, crest) or check(f2, f1, k, f4, crest):
                    ans = max(tmp + 1, ans)

        else:
            '''
            | 1 | 2 | 3 |
            | 4 | 5 | 6 |
            | 7 | 8 | 9 |
            '''
            f1 = flag[i - 1][j - 1]
            f2 = flag[i - 1][j]
            f3 = flag[i - 1][j + 1]
            f4 = flag[i][j - 1]
            f5 = flag[i][j]
            f6 = flag[i][j + 1]
            f7 = flag[i + 1][j - 1]
            f8 = flag[i + 1][j]
            f9 = flag[i + 1][j + 1]
            cnt = check(f1, f4, f2, f5, crest) + check(f2, f5, f3, f6, crest) + check(f4, f7, f5, f8, crest) + check(f5, f8, f6, f9, crest)
            if cnt >= 2:
                continue
            for k in char: #cnt = 0, 1
                if k == f5:
                    continue
                ans = max(tmp - cnt + check(f1, f4, f2, k, crest) + check(f2, k, f3, f6, crest) + check(f4, f7, k, f8, crest) + check(k, f8, f6, f9, crest), ans)

if ans == 0:
    print(tmp)
else:
    print(ans)

PythonでJOI難易度6を埋める #23

B - IOI饅頭(IOI Manju)

 dp[ i ] [ j ] := i番目の箱まで使えるときの,j個以上の饅頭を入れるために必要な金額の最小として,dpします.饅頭は高い方から売った方がいいので,降順でsortして,累積和を取っておきます.

from sys import stdin
input = stdin.readline
inf = float('inf')

m, n = map(int, input().strip().split())
manjuu = [int(input().strip()) for _ in range(m)]
boxes = [list(map(int, input().strip().split())) for _ in range(n)]

manjuu.sort(reverse = True)
csum_price = [0]
for i in range(m):
    csum_price.append(csum_price[-1] + manjuu[i])

ans = 0
dp = [[inf for _ in range(m + 1)] for _ in range(n)]
for i in range(n):
    dp[i][0] = 0

for i in range(1, m + 1):
    if i > boxes[0][0]:
        break
    dp[0][i] = boxes[0][1]
    ans = max(csum_price[i] - dp[0][i], ans)

cnt = boxes[0][0]
for i in range(1, n):
    cnt += boxes[i][0]
    for j in range(m + 1):
        if j <= cnt:
            dp[i][j] = min(dp[i - 1][max(j - boxes[i][0], 0)] + boxes[i][1], dp[i - 1][j], dp[i][j])

            ans = max(csum_price[j] - dp[i][j], ans)
print(ans)