![P16341 [科大国创杯初中组 2026] 乘积 题解](http://pic.xiahunao.cn/yaotu/P16341 [科大国创杯初中组 2026] 乘积 题解)
P16341 [科大国创杯初中组 2026] 乘积Link: https://www.luogu.com.cn/problem/P16341题目背景Subtask 0 为民间数据Subtask 1 为官方测试数据。题目描述小可可有一个正整数序列他想知道能否在这个序列中找出连续一段数字的乘积等于一个正整数x xx。输入格式第一行两个正整数n , x n, xn,x表示序列长度和乘积。第二行n nn个正整数a 1 , … , a n a_1, \dots, a_na1,…,an表示小可可的序列。输出格式如果找不出连续一段数字的乘积等于x xx输出-1否则输出两个数l , r l, rl,r(l ≤ r l \le rl≤r) 表示a l × a l 1 × ⋯ × a r x a_l \times a_{l1} \times \dots \times a_r xal×al1×⋯×arx。如果l , r l, rl,r不止一组请输出l ll最小的如果最小的l ll相同请输出r rr最小的。输入输出样例 #1输入 #15 24 1 2 3 4 5输出 #11 4输入输出样例 #2输入 #25 9 1 2 3 4 5输出 #2-1说明/提示其它样例说明样例 3 ~ 4见选手目录下的multiply/multiply*.in与multiply/multiply*.ans。数据范围对于30 % 30\%30%的数据n 2 n 2n2。对于另外30 % 30\%30%的数据x 1 x 1x1。对于100 % 100\%100%的数据n ≤ 100 , 1 ≤ a i , x ≤ 10 4 n \le 100, 1 \le a_i, x \le 10^4n≤100,1≤ai,x≤104。Solution1. 题意给定一个数组{ a n } \{a_n\}{an}求是否存在一个子序列里面的元素之积等于目标整数。2. 分析看到数据范围n nn才100 100100就知道钦定可以直接暴力O ( n 2 ) O(n^2)O(n2)双重循环了。既然每个元素都是10 4 10^4104的规模全乘起来可能溢出于是自然想到用 Python然后就能愉快的 AC 了。记得找到可行解后在 Python 里面用sys.exit(0)立刻退出类似于 C/C 的exit(0)。3. 代码importsys n,xmap(int,input().split())ainput().split()a[int(item)foritemina]foriinrange(len(a)):current1forjinrange(i,len(a)):current*a[j]ifcurrentx:print(i1,j1)sys.exit(0)print(-1)