他通过显微镜长期观察,记录下了
小明提出了一个理论模型:他认为这些细胞的增殖可能遵循一种规律,即种群数量会等于某个“增殖基数”
现在,小明整理出了
他希望您能帮他验证,对于每一组假说
1. 总共有多少条记录符合
2. 在所有符合该模式的记录中,单个增殖周期(即固定的
输入第一行包含两个正整数和
,分别代表观测记录的数量和假说的数量。
第二行包含个整数,表示
条细胞种群数量的观测记录
。数据保证按从小到大的顺序排列。
接下来行,每行包含两个整数
和
,代表一组假说的增殖基数和稳定基数。
输出共行,每行对应一组假说的验证结果。
每行输出两个整数,以空格隔开,分别代表:
1. 符合该假说模式的总观测记录数。
2. 该假说模式下的增殖峰值。
4 2 45 78 90 429981774 12 78 9 42561285
2 1 1 1
11 3 2 3 4 5 5 6 7 7 9 16 17 2 0 2 1 0 7
3 1 5 2 2 2
本题由牛友@Charles 整理上传
await readline();
const records = (await readline()).split(" ").reduce((a, b) => {
a[+b] = (a[+b] || 0) + 1;
return a;
}, []);
const guesses = [];
while ((line = await readline())) {
const guess = line.split(" ").map(Number);
guesses.push(guess);
}
const maxC = records.length - 1;
const res = [];
for (const [b, s] of guesses) {
let count = 0;
let max = 0;
if (b === 0) {
count = max = records[s] || 0;
} else if (b === 1) {
count = max = records[s + 1] || 0;
} else {
for (let i = 1; b ** i + s <= maxC; i++) {
const current = records[b ** i + s] || 0;
count += current;
max = Math.max(max, current);
}
}
res.push([count, max]);
}
for (const result of res) {
console.log(result.join(" "));
}