X day2

题目

官方题解

T1:

我们可以把问题化简为$a\times b \times c \leq n $中的有序$(a,b,c)$有多少组。分三种情况考虑

当$a=b=c$时,答案十分好统计

当$a<b<c$时,统计完答案$\times 6$

当$a=b$ and $a<c$时,答案$\times 3$

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
inline int read(){
    int f=1,ans=0;char c;
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}
    return f*ans;
}
int n,ans,tmp;
signed main(){
    n=read();
    tmp=0;
    for(int i=1;(i*i)<=n/i;i++,ans++){
        for(int j=i+1;(j*j)<=n/i;j++){
            tmp+=n/(i*j)-j;
        }
    }
    tmp*=6;
    ans+=tmp;tmp=0;
    for(int i=1;i*i<=n;i++){
        tmp+=n/(i*i);
        if(i*i<=n/i) tmp--;
    }
    tmp*=3;
    ans+=tmp;
    printf("%lld",ans);
}
View Code

 

posted @ 2018-11-06 12:55  siruiyang_sry  阅读(116)  评论(0编辑  收藏  举报