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); }