題意:給出乙個長方形的面積,然後求長和寬都不能小於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...