Codeforces Round #146 (Div. 2)——B

来源:互联网 发布:sql合并两列查询结果 编辑:程序博客网 时间:2024/06/10 00:24
B. Easy Number Challenge
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers aband c. Your task is to calculate the following sum:

Find the sum modulo 1073741824 (230).

Input

The first line contains three space-separated integers ab and c (1 ≤ a, b, c ≤ 100).

Output

Print a single integer — the required sum modulo 1073741824 (230).

Sample test(s)
input
2 2 2
output
20
input
5 6 7
output
1520
Note

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 <cstdio>#include <algorithm>#include <cstring>using namespace std;#define maxn 1000020#define MOD 1073741824int s[maxn];int main(){    int a,b,c;    memset(s,0,sizeof(s));    scanf("%d%d%d",&a,&b,&c);    int t=a*b*c;    for(int i=1; i<=t; i++)        for(int j=1; i*j<=t; j++)            s[i*j]++;    int ans=0;    for(int i=1; i<=a; i++)        for(int j=1; j<=b; j++)            for(int k=1; k<=c; k++)            {                ans+=s[i*j*k];                ans%=MOD;            }    printf("%d\n",ans);    return 0;}


原创粉丝点击