diff options
Diffstat (limited to 'others/mHoang')
-rw-r--r-- | others/mHoang/README.md | 75 | ||||
-rw-r--r-- | others/mHoang/decor.c | 13 | ||||
-rwxr-xr-x | others/mHoang/decor.py | 15 | ||||
-rw-r--r-- | others/mHoang/pfactor.c | 21 | ||||
-rw-r--r-- | others/mHoang/triangle.c | 19 |
5 files changed, 143 insertions, 0 deletions
diff --git a/others/mHoang/README.md b/others/mHoang/README.md new file mode 100644 index 0000000..05aa6bc --- /dev/null +++ b/others/mHoang/README.md @@ -0,0 +1,75 @@ +# mHoang + +## THỪA SỐ NGUYÊN TỐ (PFACTOR.*) + +Cho số nguyên dương n, tìm số nguyên tố p lớn nhất là ước số của n. + +### Dữ liệu + +Vào từ thiết bị nhập chuẩn số nguyên n, (2 ≤ n ≤ 10<sup>14</sup>). + +### Kết quả + +Ghi ra thiết bị xuất chuẩn một số nguyên duy nhất là ước số nguyên tố lớn nhất +của n. + +### Ví dụ + +| Sample Input | Sample Output | +| :----------: | :-----------: | +| 10 | 5 | + +## TAM GIÁC (TRIANGLE.*) + +Cho ba số nguyên a, b, c là độ dài ba cạnh của một tam giác, hãy cho biết tam +giác đó là tam giác vuông, nhọn, hay tù. + +### Dữ liệu + +Vào từ thiết bị nhập chuẩn ba số nguyên dương a, b, c cách nhau bởi dấu cách. + +### Kết quả + +Ghi ra thiết bị xuất chuẩn số 0, 1, hay 2 tùy theo tam giác đó là vuông, nhọn, +hay tù. + +### Ví dụ + +| Sample Input | Sample Output | +| :----------: | :-----------: | +| 3 4 5 | 0 | +| 3 3 3 | 1 | +| 3 4 6 | 2 | + +## HỆ THỐNG ĐÈN MÀU (DECOR.*) + +Để trang trí cho một lễ hội, ban tổ chức đã dùng một hệ thống đèn màu gồm n đèn +đánh số từ 1 đến n. Mỗi đèn có khả năng sáng màu xanh hoặc màu đỏ. Các đèn được +điều khiển theo quy tắc sau: + +* Bấm công tắc lần 1, tất cả các đèn đều sáng màu xanh. +* Bấm công tắc lần 2, tất cả các đèn có số thứ tự chia hết cho 2 sẽ đổi màu + (xanh thành đỏ và ngược lại). +* Bấm công tắc lần 3, tất cả các đèn có số thứ tự chia hết cho 3 sẽ đổi màu + (xanh thành đỏ và ngược lại). +* ... +* Bấm công tắc lần n, tất cả các đèn có số thứ tự chia hết cho n sẽ đổi màu + (xanh thành đỏ và ngược lại). + +### Yêu cầu + +Xác định số đèn sáng màu xanh sau n lần bấm công tắc. + +### Dữ liệu + +Vào từ thiết bị nhập chuẩn số nguyên dương n ≤ 10<sup>18</sup>. + +### Kết quả + +Ghi ra thiết bị xuất chuẩn số đèn xanh sau lần bấm công tắc thứ n. + +### Ví dụ + +| Sample Input | Sample Output | +| :----------: | :-----------: | +| 6 | 2 | diff --git a/others/mHoang/decor.c b/others/mHoang/decor.c new file mode 100644 index 0000000..54cb2c6 --- /dev/null +++ b/others/mHoang/decor.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include <math.h> + +int main() +{ + unsigned long long n; + + scanf("%lld", &n); + + printf("%ld\n", (unsigned long) sqrt(n)); + + return 0; +} diff --git a/others/mHoang/decor.py b/others/mHoang/decor.py new file mode 100755 index 0000000..a083f6d --- /dev/null +++ b/others/mHoang/decor.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +# Dễ thấy các đèn đổi màu lẻ lần có màu xanh, chẵn lần màu đỏ. +# +# Xét đèn thứ i: +# * Giả sử phân tích i thành các ước nguyên tố: i = p1 ** q1 + ... + pm ** qm, +# khi đó i sẽ có k = (q1 + 1) * ... * (qm + 1) ước nguyên dương. +# * Đèn thứ i sẽ được đổi màu ở lần bấm công tắc nhận i làm bội, hay sẽ đổi màu +# k lần. +# * k lẻ khi và chỉ khi q1 + 1, ..., qm + 1 đều lẻ hay q1, ..., qm đều chẵn tức +# là i là số chính phương. +# +# Vậy kết quả cần tìm là số số chính phương từ 1 đến n. + +print(int(int(input()) ** 0.5)) diff --git a/others/mHoang/pfactor.c b/others/mHoang/pfactor.c new file mode 100644 index 0000000..fee50b5 --- /dev/null +++ b/others/mHoang/pfactor.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <math.h> + +int main() +{ + long long n, sqrtn; + long i, tmp; + + scanf("%lld", &n); + sqrtn = sqrt(n); + + for (i = 2; i <= sqrtn && n > 1; i++) + while (n % i == 0) { + n /= i; + tmp = i; + } + + printf("%lld\n", (n == 1) ? tmp : n); + + return 0; +} diff --git a/others/mHoang/triangle.c b/others/mHoang/triangle.c new file mode 100644 index 0000000..0f5d28e --- /dev/null +++ b/others/mHoang/triangle.c @@ -0,0 +1,19 @@ +#include <stdio.h> + +char angle(long x, long y, long z) +{ + long long tmp = x * x + y * y - z * z; + + return (tmp ? (tmp > 0 ? 1 : 2) : tmp); +} + +int main() +{ + long a, b, c; + + scanf("%ld %ld %ld", &a, &b, &c); + + printf("%hhd\n", angle(a, b, c) * angle(b, c, a) * angle(c, a, b)); + + return 0; +} |