Easy Number Challenge(求因子个数)

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

Easy Number Challenge(求因子个数)
文章图片

Find the sum modulo1073741824 (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.
【Easy Number Challenge(求因子个数)】
So the result is1?+?2?+?2?+?3?+?2?+?3?+?3?+?4?=?20.
题意:即求将每个数的因子个数相加
题解:打表列出每个数的因子个数,相加即可

#include #define MAXN 1000100 using namespace std; int df[1000500]={0}; int main() { int i,j,k; int a,b,c; int ans=0; for(i=1; i<=MAXN; i++) { df[i]++; j=i+i; while(j<=MAXN) { df[j]++; j+=i; } df[i]%=1073741824; } cin>>a>>b>>c; for(i=1; i<=a; i++) for(j=1; j<=b; j++) for(k=1; k<=c; k++) { ans+=df[i*j*k]; ans%=1073741824; } cout<


    推荐阅读