Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

lỗi sai substring

khoảng 1 năm trước 304 lượt xem 1 bình luận

Cho số n nguyên dương. Hãy tính tổng các số chẵn được hình thành từ N. Ví dụ N=1247 khi đó tổng các số chẵn là 2+4+12+24+124. Dữ liệu vào tongchan inp, kết quả ra tongchan.out

đây là ý tưởng của em cho code
#include <bits/stdc++.h>
#define PB push_back
#define F first
#define S second
#define bit(x, i) ((x >> i) & 1)
#define il (node * 2)
#define ir (il + 1)
#define ll long long
#define pll pair <long long, long long>
#define MOD 1000000007
#define MP make_pair
#define dem1 __builtin_popcount
#define vll vector<long long>
#define Task ""
using namespace std;
ll cv(string s){
    stringstream ss(s);
    ll x;
    ss >> x;
    return x;
}
string dao(string k){
    reverse(k.begin(), k.end());
    return k;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    if(fopen(Task".inp", "r")) {
        freopen(Task".inp", "r", stdin);
        freopen(Task".out", "w", stdout);
    }
     string s, k;
     cin >> s;
     dao(s);
     vll v;
     for(ll i = s.size()-1; i>=0; i--){
        if(s[i] %2 == 0){
            k = s[i];
            v.PB(cv(k));
            for(ll j = i; j > 0; j--){
                k= s[j-1]+k;
                v.PB(cv(k));
                break;
            }
        }                    
    }
    newstr = s.substr(j, i)
    for(ll i : v){
        cout << i << " ";
    }
    return 0;
}
mọi người giúp em xem sai ở đâu mà chỉ lưu được các số có 1, 2 chữ số mà k được toàn bộ

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Hieu Dang đã bình luận khoảng 1 năm trước

Có thể sửa lại như sau, bạn chạy thử lại xem nhé!

for(ll j = i; j >= 0; j--){
    k = s[j] + k;
    v.PB(cv(k));
}

Việc sử dụng break khiến vòng lặp chỉ thực hiện một lần, dẫn đến việc chỉ tạo ra các số chẵn có 1 hoặc 2 chữ số.

Bài viết
0
Câu hỏi
1
Bình luận
0

Câu hỏi mới nhất