[TIOJ][1615] A! + B! problem


前言

好久沒有寫 code 發題解了 最近因為一些事情沒有時間(也沒有心情)認真寫 code (因為上次 CodeForces 連續掉分我心情有點糟) (啊還有學科校內爆炸也是我心情糟的原因之一) (開始懷疑我到底這一年努力是為了什麼,之類的)

然後今天想說寫個題目、發個題解刷一下存在感,之類的 所以跑去 TIOJ 翻題目 然後看到這題 。。。寫完 AC 了之後發現很裸,裸到有點不知道該說什麼

題目 & 解法

大意上是說,給定兩數字 A,BA, B ,求 A!+B!A! + B! 共有多少個質因數 原網址我放在這

很直觀的會拆成 A!((BA)!+1)A! ( ( B - A )! + 1 ) 來做 所以答案就是小於 AA 的質因數個數,然後再檢查 (BA)!+1( B - A )! + 1 共有多少個質因數 因為要加一,所以我想了很久 感覺這種題目就是會卡 O(N2)O ( N ^ 2 ) 解(被這種題目雷到好幾次@@) 但是我真的沒有想法 所以就寫了個 O(N2)O ( N^2 ) 的解法 。。。然後過了,wtf 就真的把 (BA)!+1( B - A )! + 1 暴力做,然後暴力檢查 就這樣。。。 我一臉懵逼的坐在電腦前傻了一下 才開始動手打這篇文章

code

// by. MiohitoKiri5474
#include<bits/stdc++.h>

using namespace std;

typedef long long LL;
#define maxN 1000000

bitset < maxN > lib;
vector < LL > prime;

int main(){
    ios::sync_with_stdio ( false );
    cin.tie ( 0 );
    cout.tie ( 0 );
    #define int LL

    lib[0] = lib[1] = true;
    for ( int i = 2 ; i < maxN ; i++ ){
        if ( !lib[i] ){
            prime.push_back ( i );
            for ( int j = i ; j < maxN ; j += i )
                lib[j] = true;
        }
    }

    int a, b, len = prime.size();
    LL ans, stp;
    while ( cin >> a >> b ){
        if ( a > b )
            swap ( a, b );
        ans = upper_bound ( prime.begin(), prime.end(), a ) - prime.begin();
        stp = 1;
        for ( int i = a + 1 ; i <= b ; i++ ){
            stp *= i;
        }
        stp++;
        for ( int i = 0 ; i < ans ; i++ ){
            while ( stp % prime[i] == 0 ){
                stp /= prime[i];
            }
        }

        for ( int i = ans ; i < len ; i++ ){
            if ( !( stp % prime[i] ) ){
                ans++;
                while ( stp % prime[i] == 0 )
                    stp /= prime[i];
            }
        }

        if ( stp > maxN )
            ans++;

        cout << ans << '\n';
    }
}

後記

最近特殊選才有點忙 加上 CodeForces,校內賽的陰影 我可能會暫時停筆一下啦XD 沒有意外,等到特選告一段落會繼續。。。吧 等等印象中好像有 CodeForces,啊不過有點晚 會不會打還是未知數 下禮拜的 HPCW、MCC 打完,應該又會停一段時間吧 在特選放榜前我應該不會繼續認真搞比賽了 因為我不知道在放榜後我會何去何從(笑 先讀點書好像比較保險

不過如果特選有好結果我還是會認真搞 TOI 入營考啦 已經是最後一年了,能不能進去就聽由天命囉

然後,謝謝看到這邊的你 (我這麼寫怎麼有點感傷啊XD) 我已經很久沒有發文了,希望大家還有在看 謝謝各位一直以來對我的支持 <3