• Easy Number Challenge(暴力,求因子个数)


    Easy Number Challenge
    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
    Appoint description: 

    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

    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.

    题解:

    d(x)代表x的因子的个数;还好i,j,k都不大,100,暴力就行,直接由于因子个数等于质因子的系数加一之积,反素数讲过,由此可得;

    代码:

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<iostream>
    #include<set>
    #define ll long long
    #define MOD 1073741824
    using namespace std;
    int num[110];
    int main()
    {
        int a,b,c;
        int i,j,k;
        while(scanf("%d%d%d",&a,&b,&c)!=EOF)
        {
            memset(num, 0, sizeof(num));
            ll sum=0, temp;
            set<int>st;
            set<int>::iterator iter;
            for(i=1;i<=a;i++)
            {
                for(j=1;j<=b;j++)
                {
                    for(k=1;k<=c;k++)
                    {
                    temp = i * j * k;
                    ll cnt = 1;
                    for(int p = 2; p <= temp; p++){
                        if(temp % p == 0){
                            int cur = 0;
                            while(temp % p == 0){
                                temp /= p;
                                cur++;
                            }
                            cnt *= cur + 1;
                        }
                    }
                    sum += cnt;
                    sum %= MOD;
                    }
                    }
                }
                
            printf("%lld
    ",sum);
        }
        return 0;
    }
  • 相关阅读:
    聊聊用机器人做无人驾驶
    透过国外初创公司看高精度地图难题
    百度Apollo无人驾驶入门课程下载
    关于高精度地图定义的探讨
    camera理论基础和工作原理
    FPGA配置OV5640摄像头及RGB图像数据采集
    详细的摄像头模组工作原理!!!
    摄像头PIN脚功能作用
    详解摄像头各个引脚的作用关系
    Linux下UDP的组播接收和发送的简单例子
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5440207.html
Copyright © 2020-2023  润新知