E - Sigma Function【数学】【规律】

题目链接:https://vjudge.net/contest/333800#problem/E
题目大意:根据唯一分解定理,计算[1,n][1,n]约数是偶数的个数。
思路:被数据范围演了,打表找规律即可。
我们发现:一个数是平方数的话约数和就是奇数(直接开方向下取整);一个数包含2的奇数次方的约数和也是奇数(除2之后直接开方向下取整),所以用nn减去即是答案。
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;
}

惊呆了吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章