題目鏈接:https://vjudge.net/contest/333800#problem/E
題目大意:根據唯一分解定理,計算約數是偶數的個數。
思路:被數據範圍演了,打表找規律即可。
我們發現:一個數是平方數的話約數和就是奇數(直接開方向下取整);一個數包含2的奇數次方的約數和也是奇數(除2之後直接開方向下取整),所以用減去即是答案。
AC代碼:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin>>t;
int Case=0;
while(t--){
ll n;
cin>>n;
ll ans=n-(ll)sqrt(n)-(ll)sqrt(0.5*n);
cout<<"Case "<<++Case<<": "<<ans<<"\n";
}
return 0;
}
驚呆了吧!