Tìm Số đối Xứng Thứ N Vd Input 30 Output 212 Giới Hạn N<
Có thể bạn quan tâm


Tìm kiếm với hình ảnh
Vui lòng chỉ chọn một câu hỏi
Tìm đáp án
Đăng nhập- |
- Đăng ký


Hoidap247.com Nhanh chóng, chính xác
Hãy đăng nhập hoặc tạo tài khoản miễn phí!
Đăng nhậpĐăng ký

Lưu vào
+
Danh mục mới
- thucle2702

- Chưa có nhóm
- Trả lời
0
- Điểm
336
- Cảm ơn
0
- Tin Học
- Lớp 9
- 30 điểm
- thucle2702 - 14:10:31 08/06/2022
- Hỏi chi tiết
Báo vi phạm
Hãy luôn nhớ cảm ơn và vote 5* nếu câu trả lời hữu ích nhé!
TRẢ LỜI
- Daoanhviet96

- Chưa có nhóm
- Trả lời
2901
- Điểm
47938
- Cảm ơn
1864
- Daoanhviet96
- Câu trả lời hay nhất!

- 08/06/2022

Ý 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}}$

Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Cảm ơn 2
Báo vi phạm


- hoanganhnguyen09302

- GenZ A00
- Trả lời
9055
- Điểm
97370
- Cảm ơn
5311
căng vậy :)
- hoanganhnguyen09302


- Daoanhviet96

- Chưa có nhóm
- Trả lời
2901
- Điểm
47938
- Cảm ơn
1864
Còn code của ông thì không chạy nổi 10^6 trong 1s đâu :v
- Daoanhviet96


- hoanganhnguyen09302

- GenZ A00
- Trả lời
9055
- Điểm
97370
- Cảm ơn
5311
uk căng lắm đến ${10^5}$
- hoanganhnguyen09302


- Daoanhviet96

- Chưa có nhóm
- Trả lời
2901
- Điểm
47938
- Cảm ơn
1864
Cơ mà code ông nó là if else đến chết nhỉ :))
- Daoanhviet96


- wii235

- Competitive programming
- Trả lời
90
- Điểm
2206
- Cảm ơn
112
trong hàm rvs thay thành: reverse(s.begin(), s.end()); return s; cho nhanh này :))
- wii235
Xem thêm:
- >> Tuyển tập 100+ đề bài đọc hiểu Ngữ Văn lớp 9


- tuongtaylor

- Hội code dạo
- Trả lời
2376
- Điểm
46183
- Cảm ơn
1806
- tuongtaylor
- 09/06/2022

#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;}
Hãy giúp mọi người biết câu trả lời này thế nào?
starstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstarstar5starstarstarstarstar1 voteGửiHủy
Cảm ơn 1
Báo vi phạm


- bestanhvan

- CHUYÊN GIA
- Trả lời
2020
- Điểm
47088
- Cảm ơn
1741
https://hoidap247.com/cau-hoi/4545598 anh làm bài này giúp e vs đc ko ?
- bestanhvan
Bạn muốn hỏi điều gì?
Tham Gia Group Dành Cho Lớp 9 - Ôn Thi Vào Lớp 10 Miễn Phí

Bảng tin
Bạn muốn hỏi điều gì?
Lý do báo cáo vi phạm?
Gửi yêu cầu Hủy

Cơ quan chủ quản: Công ty Cổ phần Công nghệ Giáo dục Thành Phát
Tải ứng dụng


- Hướng dẫn sử dụng
- Điều khoản sử dụng
- Nội quy hoidap247
- Góp ý
Inbox: m.me/hoidap247online
Trụ sở: Tầng 7, Tòa Intracom, số 82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.
Từ khóa » Số đối Xứng Code
-
Kiểm Tra Số đối Xứng Trong C/C++ - Lập Trình Không Khó
-
Kiểm Tra Số đối Xứng Trong C
-
Kiểm Tra Số đối Xứng Trong C++ - Freetuts
-
Số đối Xứng Là Gì - HTTL
-
Kiểm Tra Số đối Xứng | How Kteam
-
Code Kiểm Tra Số đối Xứng Hay Không C++ - Trangwiki
-
Kiểm Tra Số Có đối Xứng Hay Không? | VnCoding
-
Kiểm Tra Số đối Xứng Trong C++ - Bài Tập C++ Có Lời Giải
-
Số Đối Xứng Là Gì - Có Nghĩa Là Gì, Ý Nghĩa La Gi 2021 - Sen Tây Hồ
-
Viết Chương Trình Kiểm Tra Số đối Xứng - Free Code !
-
Số Đối Xứng Là Gì - Có Nghĩa Là Gì, Ý Nghĩa La Gi 2021
-
Tìm Số đối Xứng Trong C - Programming - Dạy Nhau Học
-
Kiểm Tra Số Nguyên Dương Nhập Vào Có Phải Số đối Xứng Hay Không