HDU - 5528(Count a × b )数论综合+公式推导

(题意还是很好理解的,这里就不再赘述,感觉这个题的知识量还是比较大的,比赛时看到那两个函数,以为是个简单的莫比乌斯反演,仔细读完题之后才发现不是。之后又推了一会,直接放弃了。
比赛结束后又花了不少时间研究公式的推导。)

下面是公式的推导:

HDU - 5528(Count a × b )数论综合+公式推导_第1张图片

HDU - 5528(Count a × b )数论综合+公式推导_第2张图片

HDU - 5528(Count a × b )数论综合+公式推导_第3张图片

附代码:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define clr(str,x) memset(str,x,sizeof(str))
#define FRER() freopen("in.txt","r",stdin);
#define FREW() freopen("out.txt","w",stdout);
#define INF 0x3f3f3f3f
#define maxn 100010

typedef long long int ll;
using namespace std;
bool vis[maxn];
ll prime[maxn];
int num=0;
ll n;
void init_prime()
{
    memset(vis,false,sizeof(vis));
    for(ll i=2; i

 

你可能感兴趣的:(初等数论,ACM)