作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。
HTML:
<div class="calculator"><div class="form-group"><label for="n">n (总数):</label> <input id="n" min="0" type="number" placeholder="例如: 5"></div><div class="form-group"><label for="r">r (选取数):</label> <input id="r" min="0" type="number" placeholder="例如: 3"></div><button onclick="calculatePermutation()">计算排列</button><div id="result" class="result"></div></div>
JS:
function factorial(num) {
if (num === 0 || num === 1) return 1;
let result = 1;
for (let i = 2; i <= num; i++) {
result *= i;
}
return result;
}
function calculatePermutation() {
const nInput = document.getElementById('n');
const rInput = document.getElementById('r');
const resultDiv = document.getElementById('result');
const n = parseInt(nInput.value);
const r = parseInt(rInput.value);
if (isNaN(n) || isNaN(r) || n < 0 || r < 0 || r > n) {
resultDiv.textContent = "请输入有效的 n 和 r 值,且满足 r ≤ n!";
return;
}
// 计算排列 P(n, r) = n! / (n-r)!
const permutation = factorial(n) / factorial(n - r);
resultDiv.textContent = `排列结果: P(${n}, ${r}) = ${permutation.toLocaleString()}`;
}
CSS:
.calculator {
width: 100%;
background-color: #333;
color: white;
padding: 20px;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
}
label {
display: block;
margin-bottom: 10px;
font-size: 16px;
}
input, select {
width: 100%!important;
padding: 10px!important;
margin-bottom: 20px;
color: #000000;
border-radius: 5px;
border: 1px solid #555;
font-size: 16px!important;
background-color: #ffffff!important;
}
button {
width: 100%;
padding: 10px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
display: block;
margin: 0px;
margin-bottom: 20px;
margin-left: 0px!important;
}
button:hover {
background-color: orange;
}
.result {
margin-top: 20px;
text-align: center;
}
option {
background-color: #ffffff;
}
p {
font-size: 18px;
margin-top: 5px!important;
}