《P10263 [GESP202403 八级] 公倍数问题》

题目背景

对应的选择、判断题:试题 - GESP 202403 C++ 八级 - 洛谷有题

题目描述

小 A 写了一个 N×M 的矩阵 A,我们看不到这个矩阵,但我们可以知道,其中第 i 行第 j 列的元素 Ai,j​ 是 i 和 j 的公倍数(i=1,...,N,j=1,...,M)。现在有 K 个小朋友,其中第 k 个小朋友想知道,矩阵 A 中最多有多少个元素可以是 k(k=1,2,...,K)。请你帮助这些小朋友求解。

注意:每位小朋友的答案互不相关,例如,有些位置既可能是 x,又可能是 y,则它同时可以满足 x,y 两名小朋友的要求。

方便起见,你只需要输出 ∑k=1K​k×ansk​ 即可,其中 ansk​ 表示第 k 名小朋友感兴趣的答案。

输入格式

第一行三个正整数 N,M,K。

输出格式

输出一行,即 ∑k=1K​k×ansk​。

请注意,这个数可能很大,使用 C++ 语言的选手请酌情使用 long long 等数据类型存储答案。

输入输出样例

输入 #1复制

复制代码
2 5 2

输出 #1复制

复制代码
9

输入 #2复制

复制代码
100 100 100

输出 #2复制

复制代码
185233

说明/提示

样例 1 解释

只有 A1,1​ 可以是 1,其余都不行。

A1,1​,A1,2​,A2,1​,A2,2​ 都可以是 2,而其余不行。

因此答案是 1×1+2×4=9。

数据规模

对于 30% 的测试点,保证 N,M,K≤10;

对于 60% 的测试点,保证 N,M,K≤500;

对于 100% 的测试点,保证 N,M≤105,K≤106。

代码实现:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXK = 1e6 + 10;
int d[MAXK], e[MAXK];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N, M, K;
    cin >> N >> M >> K;
    for(int i = 1; i <= N; i++)
    {
        for(int k = i; k <= K; k += i)
        {
            d[k]++;
        }
    }
    for(int j = 1; j <= M; j++)
    {
        for(int k = j; k <= K; k += j)
        {
            e[k]++;
        }
    }
    ll ans = 0;
    for(int k = 1; k <= K; k++)
    {
        ans += 1LL * k * d[k] * e[k];
    }
    cout << ans << '\n';
    return 0;
}
相关推荐
凯瑟琳.奥古斯特1 小时前
力扣1015C++解法技巧
c++·算法·leetcode·链表·职场和发展
seowmt1 小时前
GEO效果该什么时候看数据:从立项到复盘的时间线复盘
算法·ip·seo·geo·faq
悠仁さん1 小时前
【算法C++】双指针(一)
数据结构·c++·算法
小豆庄1 小时前
本地视频脱敏的追踪系统踩坑——车牌过滤、转场误判与ID冲突排查
人工智能·算法·目标检测·音视频·视频·敏捷流程·纹理贴图
忆挽篱笙歌1 小时前
进程替换函数与shenll命令行解释器
前端·javascript·算法
YukiRinLL1 小时前
字符串存储与 BF、KMP 匹配算法
数据结构·算法
小超人诞生日记1 小时前
Linux:环境变量 & 进程虚拟地址空间
linux·算法
小白起 v1 小时前
【算法学习 · 01】深入理解大 O 表示法:从「能跑就行」到「专业评估」算法性能
算法
梦帮科技1 小时前
脑机接口(BCI)与神经系统安全:EEG 神经电信号欺骗注入、神经闭环解码算法与生物黑客反制
算法·安全
老徐聊GEO1 小时前
把“安徽“写进题面之后:多平台AI推荐名单的区域扰动测量(2026)
前端·人工智能·算法·geo优化