Lightoj 1341 質因子分解

2021-08-07 02:16:28 字數 931 閱讀 4867

題意:給出乙個長方形的面積,然後求長和寬都不能小於m的方案數。

思路:先對這個面積進行質因子分解,得到這個數的所有的因子數,然後因為是不能是正方形,所以他能組成的方案書為因子數/2,要得到大於等於m的話,直接減去小於m的數。

注意剛開始要判斷m * m 是否是小於等於n,這樣的話m就小於等於1e6了,不會超時。

#includeusing namespace std;

typedef long long ll;

typedef pairp;

#define fi first

#define se second

#define inf 0x3f3f3f3f

#define clr(x,y) memset(x,y,sizeof x)

#define pi acos(-1.0)

const int maxn = 2e6 + 20;

const int mod = 1e9 + 7;

int prime[maxn],is_[maxn];

ll n,m;int len;

void init()

}}int main()

ll ans = 1,t = n;

for(int i = 0; i < len && prime[i] * prime[i] <= n; i ++)

ans = ans * (cnt + 1);}}

if(n > 1)ans <<= 1;

// cout << ans << endl;

ans /= 2;

for(int i = 1; i < m; i ++)if(t % i == 0)ans --;

printf("case %d: %lld\n",ii,ans);

}return 0;

}

LightOJ 1341 因數分解

題意 求區間 a,b 中b的因數對數有幾個,x,y 和 y,x 算一對。因為x和y的範圍是1e12,那麼我們根據唯一分解定理,只需要求1到1e6範圍內的質因數即可。然後根據乘法原理 ans ans 質因數指數 1 最後ans除以2,就是b的所有因數對數。然後用ans減去,小於a的對數就是我們要求的答...

LightOJ 1341 唯一分解定理

思路就是把a分解質因數,對於乙個質因數a1p1,會是a的因數多 p1 1 倍 不選或者選幾個,乘法法則 對於每個因數,都會有另乙個因數與他乘在一起結果是a,所以我們求出因數的個數之後除以2即可得出組合的數量,然後對於給的範圍,0 b中每有乙個因數,組合的數量便會減一。如果我們需要對n分解質因數,只要...

hdu 5428 分解質因子

題意 給你n個數,讓你求出這n個數最小的因子之積,但要滿足乙個條件,那就是這個乘積必須包含三個因子,可以為本身 解題思路 對於每乙個數字,它有用的部分其實只有它的所有質因子 包括相等的 求出所有數的所有質因子中最小的兩個,相乘就是答案。如果所有數字的質因子個數不到兩個,那麼就是無解。時間複雜度o n...