Editorial for Bedao Regular Contest 04 - SIMPLE


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: bedao

Thuật toán

Đệ quy quay lui

Ý tưởng

Sinh các số có tổng chữ số chia hết cho ~10~ bỏ vào một mảng rồi in ra số thứ ~n~.

ý tưởng khác :

Nhận thấy các số có tổng các chữ số chia hết cho ~10~ mà bỏ đi chữ số hàng đơn vị thì sẽ được số mới biểu thị vị trí của số đó.

Code mẫu

/*#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")*/

#include <bits/stdc++.h>

#define for1(i,a,b) for (int i = a; i <= b; i++)
#define for2(i,a,b) for (int i = a; i >= b; i--)
#define int long long

#define sz(a) (int)a.size()
#define pii pair<int,int>
#define pb push_back

/*
__builtin_popcountll(x) : Number of 1-bit
__builtin_ctzll(x) : Number of trailing 0
*/

const long double PI = 3.1415926535897932384626433832795;
const int INF = 1000000000000000000;
const int MOD = 1000000007;
const int MOD2 = 1000000009;
const long double EPS = 1e-6;

using namespace std;

int sum(int x) {
    int res = 0;
    while (x > 0) {
        res += x % 10;
        x /= 10;
    }
    return res;
}

signed main() {

    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    // freopen("cf.inp", "r", stdin);
    // freopen("cf.out", "w", stdout);

    int cur = 1, n;
    cin >> n;
    while (1) {
        if (sum(cur) % 10 == 0) n--;
        if (n == 0) break;
        cur++;
    }

    cout << cur;

}

Comments

Please read the guidelines before commenting.


There are no comments at the moment.