Windowsで使ってるフリーソフト

最近ノートを Windows 10 にアップグレードしたので、7 までに使っていた便利なフリーソフトをまとめておきます。でもこれらが 10 で動く保証はないです。

【ブラウザ】

Google Chrome(portable ver.)

2ch ブラウザ】

V2C-R

2ch API に対応した V2C。慣れると Jane 系より便利な気がする。

設定が多いけど画像を自動 DL 設定すると使いやすくなると思う。

続きを読む

SRM 677 Div2 Easy: PalindromePrime

SRM は何回かやってたけど初めてコンテスト中に提出できました…(easy のみ)。

250: PalindromePrime

区間 [L, R] のうちで、素数かつ後ろから読んでも同じ(回分みたいになってる)整数をカウントする。 本番ではエラトステネスのふるいを書いたけど素数判定と回文判定だけすればいいらしい。

class PalindromePrime {
    public:
        // 回文かどうか
        bool is_r(int s) {
            stringstream ss;
            ss << s;
            string a = ss.str();
            int n = a.size();
            for(int i=0; i<n; i++) {
                if(a[i] != a[n - 1 - i]) return false;
            }
            return true;
        }

        bool is_prime(int n) {
            for(int i=2; i*i <= n; i++)
                if(n % i == 0) return false;
            return n != 1;
        }

        int count(int L, int R) {
            int ans = 0;
            for(int i = max(2, L); i <= R; i++) {
                if(is_prime(i) and is_r(i)) ans++;
            }
            return ans;
        }
};

来年は本気を出して緑以上になりたい。

アイカツ画像をツイートするTwitter botを作った

https://twitter.com/aikatsu_image

アイカツの画像をツイートする bot です。所持してるアイカツ画像を PC に溜めておくのも宝の持ち腐れ感があったので作りました。

bot のプログラムは python で書いて、Windows のタスクスケジューラで実行させています。tweepy というモジュールを使うと数行で書けて凄い。Twitter API を使うのは面白そうなのでもう少し遊んでみたいと思った一瞬でした。

ところでデスクトップ PC 上で動かすと常時起動が必要なので Raspberry PI とかが欲しいですね。サーバーを借りるようなものでもないと思うので…。

追記(2015/12/19)

RasPI 上で動かすことにしました。cron が使えて便利です。あと省電力。

AOJ0516: Maximum Sum(累積和, しゃくとり法)

Maximum Sum | Aizu Online Judge

累積和としゃくとり法を知らなかったのでメモ。計算量を考えずに全探索までしていたので書いておく。 最悪 O(n2) で最大 n = 100000 だから全探索はダメ(指数記号が出せない…)。

続きを読む

AOJ0030: Sum of Integers 

Sum of Integers | Aizu Online Judge
深さ優先探索の問題。C++ で書いたものを Python に翻訳して分かった気になるアレ。

#!/usr/bin/env python

def dfs(pos, t, sum):
    global cnt
    if t == n:
        if sum == s:
            cnt += 1
        return
    if pos > 9:
        return
 
    dfs(pos+1, t, sum)
    dfs(pos+1, t+1, sum + pos)
 
 
while True:
    n, s = map(int, raw_input().split())
    if n==0 and s==0: break
 
    cnt = 0
    dfs(0, 0, 0)
    print cnt

蟻本の DFS の説明の理解に時間がかかったし、遷移の仕方が直感的にわからないから演習を詰むしかなさそう。
DP でも解けるらしいけどもっとわからん。