L1-006 连续因子
关键在于,不是先找这个数的所有因数,然后再看有没有连续的,最长的是多少。(这很人类思维)
我们应该从2开始遍历,看看能否找到某些连续的数符合条件。
代码
int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll n; cin >> n; int first=0, len = 0; int i, j; for (i = 2; i <= sqrt(n); i++) { ll tmp = 1; for (j = i;; j++) { tmp *= j; if (n % tmp) break; } if (j - i > len) { //>号决定了输出的为最小序列 first = i; len = j - i; } } if (first == 0)//n为质数 cout << 1 << endl << n; else { cout << len << endl; for (int i = 0; i < len - 1; i++) cout << i + first << '*'; cout << first + len - 1; } }