C - 1003
Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Description
Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers a, b and c. Your task is to calculate the following sum:

Find the sum modulo 1073741824 (230).
Input
The first line contains three space-separated integers a, b and c (1 ≤ a, b, c ≤ 100).
Output
Print a single integer — the required sum modulo 1073741824 (230).
Sample Input
Input
2 2 2
Output
20
Input
5 6 7
Output
1520
Sample Output
Hint
For the first example.
- d(1·1·1) = d(1) = 1;
- d(1·1·2) = d(2) = 2;
- d(1·2·1) = d(2) = 2;
- d(1·2·2) = d(4) = 3;
- d(2·1·1) = d(2) = 2;
- d(2·1·2) = d(4) = 3;
- d(2·2·1) = d(4) = 3;
- d(2·2·2) = d(8) = 4.
So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 1000010
#define mod (1<<30)
int prime[maxn];
int p[maxn];
int f=0;
void hehe()
{
cout<<++f<<endl;
}
int main()
{
int a,b,c;
cin>>a>>b>>c;
int cnt=0;
for(int i=2;i<=a*b*c;i++)
if(!p[i])
{
prime[++cnt]=i;
for(int j=i+i;j<=a*b*c;j+=i)
p[j]=1;
}
int ans=1;
int sum=0;
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
for(int k=1;k<=c;k++)
{
ans=1;
int temp=i*j*k;
for(int o=1;o<=cnt&&temp>=prime[o];o++)
{
if(temp%prime[o]==0)
{
int k1=1;
temp/=prime[o];
while(temp%prime[o]==0)
{
k1++;
temp/=prime[o];
}
ans=(ans*(k1+1))%mod;
}
}
sum=(sum+ans)%mod;
}
cout<<sum<<endl;
return 0;
}