LIOJ - 1011 #301
LIOJ - 1011
#301
-
[問題描述]LIOJ - 1011 嘗試過第一行數字 1 ~ 20、第二行根據第一行給予 x 個數字 想請問能提供測資嗎 在麻煩老師提點 [附上程式碼] var readline = require('readline');
var lines = []
var rl = readline.createInterface({
input: process.stdin
});
rl.on('line', function (line) {
lines.push(line)
});
rl.on('close', function() {
solve(lines)
})
function solve(lines) {
const limitMin = 1n;
const limitMax = 20n;
const limitHeightMin = 100n;
const limitHeightMax = 200n;
const limitAverageHeightMin = 183;
const regexNonDigit = /\D/g;
const heightCount = lines[0];
let heights = lines[1];
let heightSum = 0;
let result = 0;
if (regexNonDigit.test(heightCount)) {
// console.log(`第一行數字請輸入自然數`);
return;
}
if (BigInt(heightCount) < limitMin || BigInt(heightCount) > limitMax) {
// console.log(`第一行數字超過限制範圍 ${limitMin} ~ ${limitMax}`);
return;
}
if (typeof heights === 'undefined' || !heights.trim()) {
// console.log(`第二行請輸入數字`);
return;
}
heights = heights.trim().split(' ');
if (Number(heightCount) !== heights.length) {
// console.log(`第一行輸入的數字: ${Number(heightCount)}`);
// console.log(`第二行有 ${heights.length} 個數字`);
// console.log(`第一行數字和第二行數字數量不符合`);
return;
}
for (let i = 0; i < Number(heightCount); i++) {
if (regexNonDigit.test(heights[i])) {
// console.log(`第二行第 ${i+1} 個數字請輸入自然數`);
return;
}
if (BigInt(heights[i]) < limitHeightMin || BigInt(heights[i]) > limitHeightMax) {
// console.log(`第二行第 ${i+1} 個數字超過限制範圍 ${limitHeightMin} ~ ${limitHeightMax}`);
return;
}
heightSum += Number(heights[i]);
}
// console.log(`Sum: ${heightSum}`);
// console.log(`Count: ${Number(heightCount)}`);
result = heightSum / Number(heightCount);
// console.log(`Division: ${result}、Length: ${result.toString().length}`);
// console.log(`LimitAverageHeightMin: ${limitAverageHeightMin}`);
// console.log(`Result: ${result >= limitAverageHeightMin}`);
result >= limitAverageHeightMin ? console.log(`real`) : console.log(`fake`);
} |
Beta Was this translation helpful? Give feedback.
Answered by
aszx87410
Jul 6, 2023
Replies: 1 comment 1 reply
-
@HedgehogKUCC 然後一般題目的測資範圍都只是為了讓解題的人大概知道一下,不會在程式碼裡面實作檢查(因為題目也沒講說如果不符合範圍要做什麼),下次如果碰到類似情形可以試著把檢查拿掉看看(不過題目給的測資範圍確實要跟實際測資相符合才對,這是我的疏失,不好意思) |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
HedgehogKUCC
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@HedgehogKUCC
抱歉,剛檢查了一下發現是測資的問題,實際上測資的 M 有超過 20,所以依據你原先的程式碼去跑的話就會 return 因此被判定為 WA,目前已經修正題目測資範圍,把檢查都拿掉就會 AC 囉
然後一般題目的測資範圍都只是為了讓解題的人大概知道一下,不會在程式碼裡面實作檢查(因為題目也沒講說如果不符合範圍要做什麼),下次如果碰到類似情形可以試著把檢查拿掉看看(不過題目給的測資範圍確實要跟實際測資相符合才對,這是我的疏失,不好意思)