思路:思维题
这道题问有多少个三元组 A*B+C=N,事实上,对于每一对A*B<N, 总存在一个整数C满足这个等式,所以我们只需要用A遍历一遍从1到N,找到对应的满足条件的B的个数,如果A*B==N那么就自减一即可,然后将答案累加起来即可。
#include<bits/stdc++.h>
#define endl "\n"
#define pb push_back()
#define fi first
#define se second
#define pii pair<int,int>
using namespace std;
const int N=1e6+5;
const int mod=99824353;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
typedef long long ll;
typedef unsigned long long ull;
typedef struct node{
}node;
void IOS(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
}
void solve(){
ll n,ans=0;
cin>>n;
for(int i=1;i<=n;++i){
int w=n/i;
ans+=w;
if(i*(n/i)==n){
ans--;
}
}
cout<<ans;
}
int main(){
IOS();
solve();
return 0;
}