Ý tưởng:
- Tạo một mảng sdx lưu các số đối xứng.
- Đầu tiên, lưu các số từ 1->9.
- Sau đó, cứ mỗi số thứ i ta sẽ lưu các số đối xứng i+reverse(i), i+k+reverse(i) (0<=k<=9). Vd: Số 12 ta có thể lưu các số đối xứng sau: 1221, 12021, 12121, 12221, 12321, ... , 12921. Để các số đối xứng được theo thứ tự, ta sẽ lưu các số i+reverse(i) trước rồi mới lưu các số i+k+reverse(i).
- Cuối cùng là nhập và xuất ra số đối xứng thứ n (phần tử thứ n-1).
Code:
#include <bits/stdc++.h>
using namespace std;
vector<string> sdx;
string rvs(string s){
string s2 = "";
for (long long i=s.size()-1; i>=0; i--){
s2+=s[i];
}
return s2;
}
void ts(){
for (long long i=1; i<=9; i++){
sdx.push_back(to_string(i));
}
for (long long i=0; i<=4; i++){
long long s = pow(10,i);
long long e = pow(10,i+1); //s*10
for (long long j=s; j<e; j++){
string t = to_string(j);
sdx.push_back(t+rvs(t));
}
for (long long j=s; j<e; j++){
for (long long k=0; k<=9; k++){
string t = to_string(j);
sdx.push_back(t+to_string(k)+rvs(t));
}
}
}
}
int main(){
ts();
long long n;
cin >> n;
cout << sdx[n-1];
}
$\color{red}{\text{#Daoanhviet96}}$
#toidicodedao
Ý tưởng:
- Số đối cứng có tính chất: một số a, ta đảo ngược a rồi ghép vào sau (đối với số có chữ số chẵn), đảo ngược a div 10 rồi ghép vào sau (đối với số có chữ số lẻ). Khá khó giải thích, nên mình lấy ví dụ: Đoạn các số có 2 và 3 chữ số (cặp chẵn, lẻ) có 10^2*2 số đối xứng, loại các tường hợp số 0 đứng đầu, ta còn (10^2-10)*2 trường hợp. Ta đếm rồi xác định xem số cần tìm nằm trong khoảng nào, sau đó xây dựng lại số này. Vd: 30 nằm trong khoảng 3 chữ số, cách số có 3 chữ số đầu tiên là 11 đơn vị. Số đầu tiên là 101 tức là 10, ta cộng cho 11 được 21, làm theo tính chất thu được 212. Một vài trường hợp đặc biệt khác ràng thêm trong chương trình.
#include <bits/stdc++.h>
using namespace std;
int n,i; long long k,kq; bool odd;
int main () {
cin>>n;
if (n==9) return cout<<9, 0;
k=1; odd=1;
for (i=0; i+(k*10-k)<=n; ){
odd=(!odd);
i+=k*10-k;
if (odd==1) k*=10;
}
k+=n-i-1;
kq=k;
while (k!=0){
if (!(odd && k==kq && n!=i))
kq=kq*10+(k%10);
k/=10;
}
cout<<kq;
}
Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.
Nguồn : Wikipedia - Bách khoa toàn thưLớp 9 - Là năm cuối ở cấp trung học cơ sở, sắp phải bước vào một kì thi căng thẳng và sắp chia tay bạn bè, thầy cô và cả kì vọng của phụ huynh ngày càng lớn mang tên "Lên cấp 3". Thật là áp lực nhưng các em hãy cứ tự tin vào bản thân là sẻ vượt qua nhé!
Nguồn : ADMIN :))Copyright © 2021 HOCTAP247