---
# System prepended metadata

title: Contest Dau Xuan

---

# Contest Đầu Xuân

### Bài 1: 
Liệt kê tất cả ước của n (n $\le$ 10<sup>10</sup>)
- lặp tới n (O(n<sup>10</sup>))
- lặp tới n//2 (O(n<sup>9</sup>)) (không khả thi)
- lặp tới n<sup>0.5</sup> 
n = a * b 

n = a<sup>2</sup> 
a => sqrt(n)
n = 36 
a = 1; b = 36
a = 2; b = 18
a = 3; b = 12
a = 4; b = 9
a = 6; b = 6 

### Bài 2: 
- Đếm phân phối 
- Đếm số lần ký tự xuất hiện trong xâu

### Bài 3:
- Sử dụng sàng nguyên tố và xét đối xứng

### Bài 4:
- Liệt kê tất cả trường hợp có thể rồi tổng hợp thành công thức
- Ví dụ sinh trường hợp 3 chữ số, 4 chữ số
- Sau đó tổng hợp lại về dạng chung cho từng trường hợp -> abc, abcd
- 
```python=
# 123
123
132
213
231
312
321
```

```python=
# 1234
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
```


abcd = a*1000 + b*100 + c*10 + d 
3 => (1+2+3+4)*6*(1111)  
3 => (1+2+3+4)*6*(1111)

abcd = (a+b+c+d)*(|n|-1)!*(1<sup>|n|</sup>)
abcd
a = 0
0bcd = (b+c+d)*(|n|-2)!*(1<sup>|n|-1</sup>)
|abcd| - |0bcd| 
```python=
s = '0123'
y = sum(map(int,[*s])) # tổng tất cả các phần tử trong s = 6
gt = 1 
for i in range(2,len(s)):
    gt *= i
# tính giai thừa 2
gt1= gt//(len(s)-1)
#tìm số 1:
x = int('1'*len(s)) # 111

x1 = int('1'*(len(s)-1)) 

res = y * gt * x - y * gt1 * x1 # = 6*2*111

```


