chore: book/ch1 add std

This commit is contained in:
Paul Pan 2024-01-31 12:09:17 +08:00
parent e3cd843249
commit 7dcf8f5b7b
Signed by: Paul
GPG Key ID: D639BDF5BA578AF4
4 changed files with 102 additions and 0 deletions

View File

@ -9,6 +9,21 @@
"Lang" : "cpp",
"Judge": {"Type": "default", "Script": "", "Cmp": "HCMP"},
"Runtime": {"Run": {"TimeLimit": 1000, "MemoryLimit": 16, "NProcLimit": 1}}
},
{
"Lang" : "python3",
"Judge" : {"Type": "default", "Script": "", "Cmp": "HCMP"},
"Runtime": {"Run": {"TimeLimit": 2000, "MemoryLimit": 16, "NProcLimit": 1}}
},
{
"Lang" : "pypy3",
"Judge" : {"Type": "default", "Script": "", "Cmp": "HCMP"},
"Runtime": {"Run": {"TimeLimit": 2000, "MemoryLimit": 128, "NProcLimit": 1}}
},
{
"Lang" : "rust",
"Judge" : {"Type": "default", "Script": "", "Cmp": "HCMP"},
"Runtime": {"Run": {"TimeLimit": 1000, "MemoryLimit": 16, "NProcLimit": 1}}
}
],
"Tasks" : [

View File

@ -0,0 +1,46 @@
#include <bits/stdc++.h>
#define LEN 1000
int a[LEN], c[LEN];
void clear(int a[]) {
for (int i = 0; i < LEN; ++i) a[i] = 0;
}
void print(int a[]) {
int i;
for (i = LEN - 1; i >= 1; --i)
if (a[i] != 0) break;
for (; i >= 0; --i) putchar(a[i] + '0');
putchar('\n');
}
void mul(int a[], int b, int c[]) {
clear(c);
for (int i = 0; i < LEN - 1; ++i) {
c[i] += a[i] * b;
if (c[i] >= 10) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
}
int main() {
int n;
clear(a), clear(c);
scanf("%d", &n);
a[0] = 1;
int *p1 = a, *p2 = c;
for (int i = 2; i <= n; ++i) {
mul(p1, i, p2);
std::swap(p1, p2);
}
print(p1);
return 0;
}

View File

@ -0,0 +1,5 @@
n = int(input().strip())
a = 1
for i in range(1, n + 1):
a *= i
print(a)

View File

@ -0,0 +1,36 @@
use std::io;
// Powered by Github Copilot :)
fn factorial(n: u64) -> Vec<u64> {
let mut result = vec![1];
for i in 2..=n {
let mut carry = 0;
for num in &mut result {
*num = *num * i + carry;
carry = *num / 10;
*num %= 10;
}
while carry > 0 {
result.push(carry % 10);
carry /= 10;
}
}
result
}
fn print_factorial(result: Vec<u64>) {
for num in result.iter().rev() {
print!("{}", num);
}
println!();
}
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let n: u64 = input.trim().parse().unwrap();
let result = factorial(n);
print_factorial(result);
}