Đảo ngược 1 số C++

Đề:

e lấy trong leetcode
chưa hiểu sao đáp án chưa đúng mn coi giúp em

class Solution {
public:
    int reverse(int x) {
       if(x<=-2^31||x>=2^31-1){
           return 0;
       }
            bool ad;
           if(-9<=x<=9){
                return x;
            }
            if(x<0){
                x=x*-1;
                ad = false;
            }
            while(x%10==0){
                x=x/10;
            }
            int so=0,n;
            for(int i=0;i<2^31;i++){
                n=x%(10*10^i);
                so=so*10^i+n;
                x=x-(10^i)*n;
                if(x%10==x){
                    break;
                }
            }
        if(ad==false){
            so=so*-1;
        }
            return so;
        }
    
};
  1. Bạn kiểm tra x (giá trị chưa đảo) là thấy sai rồi.
  2. Vòng lặp chạy đến 2^31 để làm gì? Đã thế còn tính 10^i, mà i có thể lớn đến 2^31.

Bạn nên tham khảo bài đảo số. Sau đó thêm điều kiện kiểm tra vượt giới hạn là xong.

3 Likes

Trong C++ thì ^ là toán tử XOR nhe bạn, muốn tính lũy thừa thì phải dùng hàm pow.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?