1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

競プロ日記#25/05/21

Posted at

アルゴ式

線分上の格子点の個数

  • 「2つの格子点の各座標の差を取って最大公約数を取る→そこから-1した値」ということに気づけなかった。

// 最大公約数を求める関数
long long GCD(long long A, long long B) {
    if (B == 0)
        return A;
    else
        return GCD(B, A % B);
}

int main() {

    long long A, B, C, D;
    cin >> A >> B >> C >> D;

    long long G = GCD(abs(C - A), abs(D - B));
    cout << G - 1 << endl;
}

Ax を B の倍数に (1)

  • 割ればいいだけなのに無理にfor文で求めるというコーディングにとらわれすぎ解法で一度WAしてしまった。
  • さすがに自分で気づけたが...
int main() {
    long long A,B,N;
    cin >> A >> B >> N;
    cout << N / B << endl;
}

Ax を B の倍数に (2)

和と積が素数

  • 和と積がともに整数となるa+bは3のみ

素数の乱舞

約数が奇数個

  • 正の整数 Nの約数が奇数個 ⇔ Nは平方数ということに気づけば一瞬だった...
  • 基本は約数というのはペアになるが唯一平方数の場合だけは異なる整数のペアにならない

約数が 3 個

  • 正の整数Nが3この約数を持つ⇔ある素数pが存在してN=p^2と表せる→つまりN以下の正数のうち素数の平方で表せるものを数え上げるということに気づけなかった...
  • 解説AC

N! の約数の個数

  • ルシャンドル関数を知りませんでした

あまりが等しい (2)

  • 解説AC
  • 解説読めば理解できるなあ程度。A0の式をそれぞれから引くという発想がない

最大公約数の種類数 (1)

  • 「題意を満たす⇔最小公倍数の約数の個数を求めること」という言いかえができなかった...
// N の約数をすべて求める関数
vector<long long> calc_divisors(long long N) {
    vector<long long> res;
    for (long long i = 1; i * i <= N; ++i) {
        if (N % i != 0) continue;
        res.push_back(i);
        if (N / i != i) res.push_back(N / i);
    }
    sort(res.begin(), res.end());
    return res;
}

int main() {
    // 入力
    long long N, M;
    cin >> N >> M;

    // M の約数の個数を答える
    cout << calc_divisors(M).size() << endl;
}

最大公約数の種類数 (2)

  • 最大公約数の種類数 (1)を応用するという意味では実質的な誘導があったから理解できるが、普通に一から答えを出すのは無理だと思う。題材は最大公約数じゃなかったがABC405のC問題とかちょっと似た考え方で解いたのを覚えている

最大公約数の種類数 (3)

  • 解説なし問題でわからずじまいだったので仕方なくGPT先生に聞いた。
  • GPT先生は天才だった。
  • M/GCD が N 乗数(整数の N 乗)になっているかを確認するという観点

ミラー-ラビンの素数判定法

  • 虚無
  • 何の誘導もない素数判定問題(ただし高速で)かつヒント的なものもミラーラビン素数判定方のWikipediaへのリンクのみで泣く泣く解説を見るもサンプルコードと503で開けないページへのリンクだけだった...

ポラードのロー素因数分解法

雑談

アルゴ式が一通り落ち着いた(上級は未着手...)ので「競技プログラミングの鉄則」を読み物として読破していたが実装まで含めてゴリゴリ身に着けていきたい。やはり読んだだけでは勝てない...

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?