bluecode-【米小游】20250329_3_小米游的数组询问

时间限制:C/C++ 1000MS,其他语言 2000MS

内存限制:C/C++ 256MB,其他语言 512MB

难度:困难

出题人:root

描述

小米游拿到了一个数组,她有若干次询问,每次询问输入一个x,她希望你判断x能否由数组中的两个元素相乘得出。

用数学语言描述,你需要寻找到两个下标i和j(i<j),满足a_i*a_j=x。

输入描述

第一行输入一个正整数n,代表数组的大小。

第二行输入n个正整数a_i,代表数组的元素。

第三行输入一个正整数q,代表询问次数。

接下来的q行,每行输入一个正整数x,代表一次询问。

1 < n,q < 10^5

1< a_i,x < 10^6

输出描述

对于每次询问,如果无法找到两数乘积等于x,请输出-1 -1。

否则输出i和j(i<j),用空格隔开,代表a_i*a_j=x。

用例输入 1

复制代码
5
1 2 3 2 4
2
4
5

用例输出 1

复制代码
2 4
-1 -1

提示

样例1说明

第一组询问,输出1 5也是可以的。

第二组询问,显然无法找到两个元素相乘等于5。

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    // 读取数组
    vector<int> a(n);
    for(int i = 0; i < n; i++) {
        cin >> a[i];
    }
    
    int q;
    cin >> q;
    
    // 对于每个询问进行处理
    while(q--) {
        int x;
        cin >> x;
        
        // 使用哈希表存储元素及其下标
        unordered_map<int, int> mp;
        bool found = false;
        
        // 遍历数组
        for(int i = 0; i < n; i++) {
            // 如果 x 能被 a[i] 整除
            if(x % a[i] == 0) {
                int target = x / a[i];
                // 如果之前已经出现过 target
                if(mp.count(target)) {
                    cout << mp[target] + 1 << " " << i + 1 << endl;
                    found = true;
                    break;
                }
                // 将当前元素存入哈希表
                mp[a[i]] = i;
            }
        }
        
        if(!found) {
            cout << "-1 -1" << endl;
        }
    }
    
    return 0;
}
相关推荐
有时间要学习2 小时前
面试150——第五周
算法·深度优先
晚霞的不甘3 小时前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
望舒5133 小时前
代码随想录day25,回溯算法part4
java·数据结构·算法·leetcode
C++ 老炮儿的技术栈3 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
KYGALYX3 小时前
逻辑回归详解
算法·机器学习·逻辑回归
铉铉这波能秀3 小时前
LeetCode Hot100数据结构背景知识之集合(Set)Python2026新版
数据结构·python·算法·leetcode·哈希算法
踢足球09293 小时前
寒假打卡:2026-2-8
数据结构·算法
IT猿手4 小时前
基于强化学习的多算子差分进化路径规划算法QSMODE的机器人路径规划问题研究,提供MATLAB代码
算法·matlab·机器人
千逐-沐风4 小时前
SMU-ACM2026冬训周报3rd
算法
铉铉这波能秀4 小时前
LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版
数据结构·python·算法·leetcode·元组·tuple