D-9divsior
题目链接:https://atcoder.jp/contests/abc383/tasks/abc383_d
题意:
找出不大于n的具有9个因子的数
思路:
有因数分解定理:x需要满足:x=p1*p1*p2*p2
或者 x=pow(p1,8)
筛出根号n以内的素数,组合得出答案
要注意整数过大溢出
void solve(){
ll n;cin>>n;
euler(sqrt(n));
ll cnt=0;
for(int i=0;i<prim.size();i++){
lll x=prim[i]*prim[i];
for(int j=i+1;j<prim.size();j++){
lll y=prim[j]*prim[j];
if(y>n/x)break;
cnt++;
}
}
for(int i=0;i<prim.size();i++){
lll x=prim[i]*prim[i];
if(x>sqrt(n)/x)break;else cnt++;
}
cout<<cnt<<endl;
}

浙公网安备 33010602011771号