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;
}
相关推荐
强盛小灵通专卖员1 小时前
分类分割详细指标说明
人工智能·深度学习·算法·机器学习
IT猿手5 小时前
基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
神经网络·算法·matlab·人机交互·无人机·强化学习·无人机三维路径规划
万能程序员-传康Kk8 小时前
旅游推荐数据分析可视化系统算法
算法·数据分析·旅游
PXM的算法星球8 小时前
【并发编程基石】CAS无锁算法详解:原理、实现与应用场景
算法
ll7788118 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
烨然若神人~8 小时前
算法第十七天|654. 最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
算法
爱coding的橙子8 小时前
每日算法刷题Day2 5.10:leetcode数组1道题3种解法,用时40min
算法·leetcode
程序媛小盐9 小时前
贪心算法:最小生成树
算法·贪心算法·图论
Panesle9 小时前
分布式异步强化学习框架训练32B大模型:INTELLECT-2
人工智能·分布式·深度学习·算法·大模型
多多*10 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle