Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triể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ộ
Có thể sửa lại như sau, bạn chạy thử lại xem nhé!
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ố.