Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

Dễ

Gọi hàm

100 điểm 0% AC 0 đã giải

root

iPrometheus là một lập trình viên. Anh ấy đang phát triển một chương trình lớn bằng ngôn ngữ lập trình Heraclosures, được sáng tạo bởi người bạn Heracles của mình. Chương trình này có \(N\) hàm, mỗi hàm được đánh số từ \(1\) đến \(N\). Mỗi hàm có thể thực thi một số lệnh và thậm chí gọi các hàm khác.

Khi một hàm \(i\) gọi hàm \(j\), toàn bộ thời gian thực thi của hàm \(j\) sẽ được tính vào thời gian thực thi của hàm \(i\). Nếu một hàm không gọi bất kỳ hàm nào, thời gian thực thi của nó chỉ là thời gian cơ bản của chính nó. Để đảm bảo chương trình không gặp lỗi vòng lặp, Prometheus đã thiết kế để không có chu trình nào tồn tại trong các lời gọi hàm.

Mỗi hàm \(i\) có:

  • Thời gian thực thi cơ bản \(B_i\): thời gian cần thiết để thực thi hàm mà không bao gồm thời gian của các hàm khác mà nó gọi.
  • Danh sách các hàm được gọi trực tiếp \(C(i)\): danh sách các hàm mà hàm \(i\) gọi trực tiếp.

Thời gian thực thi tổng cộng của một hàm \(i\) được định nghĩa là:
$
T(i) = B_i + \sum_{j \in C(i)} T(j)
$

Nếu \(C(i)\) rỗng, tức là hàm \(i\) không gọi hàm nào, khi đó \(T(i) = B_i\).

Prometheus muốn thực hiện một số thay đổi và kiểm tra các hàm trong chương trình. Bạn cần viết một công cụ để hỗ trợ anh ấy thực hiện các thao tác sau:

  • Cập nhật: Thay đổi thời gian thực thi cơ bản \(B_i\) của một hàm \(i\) thành một giá trị mới \(V\). Lưu ý rằng việc cập nhật \(B_i\) không ảnh hưởng đến danh sách \(C(i)\) của hàm \(i\).
  • Truy vấn: Tính thời gian thực thi tổng cộng \(T(i)\) của một hàm \(i\) với các thay đổi hiện tại.

Cuối cùng, Prometheus không yêu cầu kết quả riêng cho từng truy vấn mà chỉ cần một giá trị tổng hợp. Nếu có \(q\) truy vấn, hãy tính tổng:
$
\text{Kết quả} = \left( \sum_{k=1}^q k \cdot T(i_k) \right) \mod (10^9 + 7)
$

trong đó \(T(i_k)\) là thời gian thực thi của hàm được truy vấn ở lần thứ \(k\).

Input

Dữ liệu đầu vào bao gồm:

  • Dòng đầu tiên chứa một số nguyên \(N\) \((1 \leq N \leq 8000)\) --- số lượng hàm trong chương trình.
  • Dòng thứ hai chứa \(N\) số nguyên \(B_1, B_2, \dots, B_N\) \((0 \leq B_i \leq 10^9)\) --- thời gian thực thi cơ bản của các hàm.
  • Dòng thứ ba chứa một số nguyên \(M\) \((1 \leq M \leq 8000)\) --- số lượng lời gọi giữa các hàm.
  • Mỗi dòng trong \(M\) dòng tiếp theo chứa hai số nguyên \(F\) và \(G\) \((1 \leq F, G \leq N, F \neq G)\), biểu thị rằng hàm \(F\) gọi trực tiếp hàm \(G\).
  • Dòng tiếp theo chứa một số nguyên \(E\) \((1 \leq E \leq 10^6)\) --- số lượng sự kiện (cập nhật hoặc truy vấn).
  • Mỗi dòng trong \(E\) dòng tiếp theo là một sự kiện:

  • U I V: Cập nhật thời gian thực thi cơ bản của hàm \(I\) thành \(V\) \((0 \leq V \leq 10^9)\).

  • Q J: Truy vấn thời gian thực thi tổng cộng của hàm \(J\) \((1 \leq J \leq N)\).

Bảo đảm rằng:

  • Không có chu trình nào tồn tại trong các lời gọi giữa các hàm.
  • Luôn có ít nhất một truy vấn trong danh sách sự kiện.

Output

In ra một số nguyên duy nhất --- kết quả tổng hợp của tất cả các truy vấn.

Example

Test 1

Input
3
10 20 100
3
1 2
2 3
1 3
3
Q 1
Q 2
Q 3
Output
770
Note

Test \(1\) : \(230\), \(120\), \(100\).

Test \(2\) : \(94\), \(42\), \(42\), \(84\).

Test 2

Input
2
42 10
2
2 1
2 1
5
Q 2
Q 1
U 2 0
Q 1
Q 2
Output
640

Scoring

  • \(25\%\) số test có \(n, m, E \leq 100\).

  • \(25\%\) số test có \(n, m \leq 8000, E \leq 8000\).

  • \(25\%\) số test có \(m = n - 1, F = i, G = i + 1\).

  • \(25\%\) số test còn lại không có ràng buộc gì thêm.

Dễ

Cặp số nguyên tố cùng nhau

100 điểm 0% AC 0 đã giải

root

Tuấn là một học sinh rất yêu thích Tin học. Ước mơ của cậu sau này là trở thành một
lập trình viên tài năng. Tuấn thường xuyên tìm hiểu các thông tin, sự kiện liên quan đến Công
nghệ. Một sự kiện công nghệ nổi tiếng trên toàn thế giới trong thời gian gần đây là sự ra mắt
robot thông minh ChatGPT của công ty công nghệ OpenAI.Tuấn cũng rất tò mỏ về ChatGPT
nên đã sử dụng để giải bài toán. Bài toán mà Tuấn đưa cho ChatGPT như sau:

Cho số nguyên dương \(n\) (\(2 \leq n \leq 2 \times 10^9\)). Đếm số lượng số nguyên dương \(x\) nhỏ hơn \(n\) mà nguyên tố cùng nhau với \(n\) (tức là \(UCLN(x,n)=1\)).

Thật là thú vị, khi Tuấn nhập \(n = 5\). ChatGPT đưa ra kết quả là: Có \(4\) số, cụ thể là các
số: \(1, 2, 3, 4\).

Tuấn muốn các bạn lập trình giải bài toán này để cùng kiểm tra kết quả của ChatGPT nhé.

Input

Vào từ file NTCN.INP gồm một số nguyên dương \(n\) \((2 \leq n \leq 2 \times 10^9)\).

Output

Ghi ra file NTCN.OUT gồm một số nguyên duy nhất là số lượng các số nguyên dương \(x\), nhỏ hơn \(n\) và nguyên tố cùng nhau với \(n\).

Example

Test 1

Input
5
Output
4

Test 2

Input
10
Output
4

Scoring

  • Có \(50\%\) số test tương ứng với \(50\%\) số điểm có \(n \leq 2000\).
  • Có \(40\%\) số test tương ứng với \(40\%\) số điểm có \(2000 < n \leq 2 \times 10^6\).
  • Có \(10\%\) số test tương ứng với \(10\%\) số điểm có \(2 \times 10^6 < n \leq 2 \times 10^9\).
Dễ

Hóa đơn điện

100 điểm 100% AC 2 đã giải

staffagent

Một công ty điện lực tính tiền điện theo quy tắc: nếu số điện tiêu thụ dưới \(200\) kWh thì giá là \(1500\) đồng mỗi kWh; nếu từ \(200\) kWh trở lên thì toàn bộ số kWh được tính giá \(3000\) đồng mỗi kWh.

Tháng vừa rồi nhà Lan dùng \(N\) kWh. Hãy tính số tiền điện phải trả.

Input

Một số nguyên \(N\).

Output

Một số nguyên: số tiền điện (đồng).

Constraints

  • \(0 < N < 1000\)

Sample Input 1

50

Sample Output 1

75000

Sample Input 2

199

Sample Output 2

298500

Sample Input 3

250

Sample Output 3

750000
Dễ

Câu 1 (6.0 điểm). Chia hết

100 điểm 100% AC 1 đã giải

root

Cho số nguyên dương \(N\) và hai số nguyên tố \(A, B\).
Hỏi có bao nhiêu số không lớn hơn \(N\) chỉ chia hết cho \(A\) hoặc \(B\)?

Input

Vào từ tệp văn bản CHIAHET.INP gồm:

  • Dòng 1 ghi số nguyên dương \(N\);
  • Dòng 2 ghi 2 số nguyên tố \(A, B\).

Output

Ghi ra tệp văn bản CHIAHET.OUT một số là kết quả của bài toán.

Example

Test 1

Input
10
2 3
Output
6
Note

Các số chia hết cho 2 là: 2, 4, 6, 8, 10.

Các số chia hết cho 3 là: 3, 6, 9.

Các số chỉ chia hết cho 2 hoặc 3 là: 2, 3, 4, 8, 9, 10 (6 số).

Số 6 chia hết cho cả 2 và 3.

Scoring

  • Subtask 1: Có 36 test (90%) tương ứng 5,4 điểm với \(N \le 10^6\), \(A, B < N\);
  • Subtask 2: Có 4 test (10%) tương ứng 0,6 điểm với \(10^6 < N \le 10^9\), \(A, B < N\).
Xem thêm