30/09/2018, 17:52
Chia sẻ và học hỏi kinh nghiệm - Tìm số đối xứng
Dành cho các bạn đang học c++
#include<iostream>
using namespace std;
int sodoixung(int n)
{
int k=0,m=n;
while(m > 0)
{
k=k*10+m%10;
m=m/10;
}
if(k==n)
return 1;
return 0;
}
int main()
{
int n;
cout << "Nhap n = ";
cin >> n;
if(sodoixung(n))
cout << n << " la so doi xung "<<endl;
else
cout << n << " khong phai la so doi xung" << endl;
return 0;
}
Bài liên quan
Tại sao mình lại không nghĩ ra ta? làm lúc trước làm bài số đối xứng này nè phải tách số ra từng phần tử rồi truyền vào mảng rồi mới kiểm tra đối xứng! Làm như bạn nhanh gọn lẹ ! tks về ý tưởng
Nếu số đối xứng là số có số lượng chữ số là chẵn thì mình có thể làm nhanh hơn. Trong vòng lặp while mình kiểm tra.
Tại hôm bữa e vừa đọc tài liệu mảng và con trỏ xong làm bài tập thấy bài số đối xứng lúc đó chỉ nghĩ tới mảng nên quyết định dùng mảng với con trỏ để làm! thấy cũng hay hay mà giờ mới biết nó dài dòng quá,
theo cách mình làm thì thế này, cho lưu số dưới dạng string ví dụ như biến st, cho i= 1, j=length(st). Sau đó while (st[i]=st[j]) and (i<j) do begin tăng i, giảm j. Cuối cùng xét nếu i<j thì không phải số đối xứng, còn i>=j thì đó là số đối xứng, độ phức tạp thì O(n/2) thui
Có thể thêm n%10 == 0, nếu đúng thì false luôn. Lí do là số 0 không bao giờ đứng đầu.