Đếm các số thỏa mãn tất cả các chữ số của nó đều nhỏ hơn hoặc bằng 5

Đề bài: Cho 2 số nguyên L,R. Đếm các số thỏa mãn tất cả các chữ số của nó đều nhỏ hơn hoặc bằng 5.
Dưới là code của em ạ.ý tưởng của em rất bình thường chỉ là kiểm tra từng chữ số của 1 số.Nếu tất cả các chữ số của số đó nhỏ hơn hoặc bằng 5 thì tăng biến dem.Nhưng không hiểu sao không cho ra kết quả.Anh chị xem giúp em với ạ.Em cám ơn

#include<iostream>
using namespace std;
int main() {
    int L,R;
    cin>>L>>R;
    int i=L;
    int dem=0;
    while(i<=R) {
        int mart=0;
        while(i > 0) {
            int s=i%10;
            if(s > 5) {
                break;
            }
            else {
                mart=1;
            }
            i=i/10;
        }
        if(mart==1) dem++;
        i++;
    }
    cout<<dem<<endl;
}

Cái này gọi đơn giản là “đơ”.
Gọi theo kiểu lập trình là lặp vô tận.
Khổ cho thân thằng i, bị 2 thằng while 1while 2 nó tung, nó hứng. while 1 thì tăng 1, còn while 2 giảm 10 lần. Chừng nào nó mới đến được “em” R đây?

“Nếu mày bước vào nhà tao 1 mét thì mày phải ra cổng bước vào lại, cho đến khi vào đến cửa thì được gặp con gái tao!”
Cửa cách cổng 10 mét.:upside_down_face:

3 Likes

em đã sửa cách làm và sử dụng queue( do bài này là em đang học ở phần đó nên sử dụng luôn).Anh xem có được không ạ

#include<iostream>
#include<queue>
using namespace std;
int main() {
    int T;
    cin>>T;
    while(T--) {
        int l,r;
        cin>>l>>r;
        queue<int>stk;
        int dem=0;
        for(int i=l;i<=r;i++)
            stk.push(i);
        while(stk.size()  > 0) {
            int n=stk.front();
            int mart=0;
            while(n > 0) {
                int s=n%10;
                hieu-=s;
                if(s > 5) {
                    break;
                }
                else if(s <= 5) {
                    mart=1;
                }
                n=n/10;
            }
            if(mart==1) {
                dem++;
            }
            stk.pop();
        }
        cout<<dem<<endl;
    }
}

Dùng queue là thừa đó bạn.

Bài này bạn đẩy phần kiểm tra ra thành hàm là gọn thôi.

4 Likes

vâng ạ.em cám ơn anh :heart_eyes:

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