标签:include i++ 严格 mes span 范围 min 组成 atom
输入正整数 XX,求 XX 的大于 11 的因子组成的满足任意前一项都能整除后一项的严格递增序列的最大长度,以及满足最大长度的序列的个数。
输入包含多组数据,每组数据占一行,包含一个正整数表示 XX。
对于每组数据,输出序列的最大长度以及满足最大长度的序列的个数。
每个结果占一行。
1≤X≤2201≤X≤220
2
3
4
10
100
1 1
1 1
2 1
2 2
4 6
#include<iostream> using namespace std; const int maxn= (1 << 20 ) + 10; int primes[maxn],cnt; bool st[maxn]; int minp[maxn]; long long f[30]; void get_prime(int n) { for(int i=2;i<=n;i++) { if(!st[i]) { primes[++cnt]=i; minp[i]=i; } for(int j=1;primes[j]*i<=n;j++) { st[primes[j]*i]=true; minp[primes[j]*i]=primes[j]; if(i%primes[j]==0) { break; } } } } int main() { get_prime(maxn); f[0]=1; for(int i=1;i<=20;i++) { f[i]=f[i-1]*i; } int x; while(cin >> x) { long long res=1; int tot=0; while(x>1) { int p=minp[x]; int k=0; while(x%p==0) { x/=p; tot++,k++; } res*=f[k]; } cout << tot << " " << f[tot]/res << endl; } return 0; }
标签:include i++ 严格 mes span 范围 min 组成 atom
原文地址:https://www.cnblogs.com/wjc2021/p/12333830.html