反素數ant BZOJ - 1053

題目傳送門

思路:這個題本來應該是一個用上唯一分解定理的爆搜,但是我沒有想到一個好的放大就直接打了一個表來做的(以後補上爆搜的方法)。

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

#define MAXN 50010
#define MAXE 5
#define INF 1000000000
#define MOD 1000000007
#define LL long long
#define ULL unsigned long long
#define pi 3.14159

using namespace std;

LL num[] = {1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040, 7560, 10080, 15120, 20160, 25200, 27720, 45360, 50400, 55440, 83160, 110880, 166320, 221760, 277200, 332640, 498960, 554400, 665280, 720720, 1081080, 1441440, 2162160, 2882880, 3603600, 4324320, 6486480, 7207200, 8648640, 10810800, 14414400, 17297280, 21621600, 32432400, 36756720, 43243200, 61261200, 73513440, 110270160, 122522400, 147026880, 183783600, 245044800, 294053760, 367567200, 551350800, 698377680, 735134400, 1102701600,
    1396755360, 3000000000};

int main() {
    std::ios::sync_with_stdio(false);
    LL n;
    cin >> n;
    int cnt = 0;
    while (num[cnt] <= n) {
        cnt++;
    }
    cout << num[cnt - 1] << endl;
    return 0;
}

/*
 2
 4
 6
 12
 24
 36
 48
 60
 120
 180
 240
 360
 720
 840
 1260
 1680
 2520
 5040
 7560
 10080
 15120
 20160
 25200
 27720
 45360
 50400
 55440
 83160
 110880
 166320
 221760
 277200
 332640
 498960
 554400
 665280
 720720
 1081080
 1441440
 2162160
 2882880
 3603600
 4324320
 6486480
 7207200
 8648640
 10810800
 14414400
 17297280
 21621600
 32432400
 36756720
 43243200
 61261200
 73513440
 110270160
 122522400
 147026880
 183783600
 245044800
 294053760
 367567200
 551350800
 698377680
 735134400
 1102701600
 1396755360
 */
發佈了130 篇原創文章 · 獲贊 25 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章