记录编号 |
344177 |
评测结果 |
AAAAAAAAAA |
题目名称 |
双亲数 |
最终得分 |
100 |
用户昵称 |
sxysxy |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.102 s |
提交时间 |
2016-11-09 22:00:22 |
内存使用 |
8.87 MiB |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstdarg>
#include <cstring>
#include <list>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define MAXN 1000002
int tot;
int primes[MAXN];
bool vis[MAXN];
int miu[MAXN];
void pre(long long maxn)
{
miu[1] = 1;
for(int i = 2; i <= maxn; i++)
{
if(!vis[i])
{
miu[i] = -1;
primes[tot++] = i;
}
for(int j = 0; j < tot; j++)
{
int k = primes[j]*i;
if(k > maxn)break;
vis[k] = true;
if(i%primes[j])
miu[k] = -miu[i];
else break;
}
}
}
typedef long long LL;
int main()
{
freopen("parents.in", "r", stdin);
freopen("parents.out", "w", stdout);
LL a, b, d;
scanf("%lld %lld %lld", &a, &b, &d);
if(a > b)swap(a, b);
LL x = a/d;
LL y = b/d;
LL ans = 0;
pre(x);
for(int i = 1; i <= x; i++)
ans += (LL)((x/i) * (y/i))*(LL)miu[i];
printf("%lld\n", ans);
return 0;
}