• Kimcoding's Dev Note!
    • About
    • Posts
    • Categories
    • Tags
    • Projects

    [BOJ | 백준] 16680번: 안수빈수

    by Kimcoding on 2020-03-26 12:55

    in BOJ

    문제 설명


    BOJ 16680

    각 자릿수의 합이 홀수인 수를 안수빈수라고 할 때 N의 배수 중 안수빈수인 수를 아무거나 하나 출력합니다.



    풀이


    굉장히 굉장히 어려운 문제였습니다…

    각 자릿수의 합을 홀수로 만들어야합니다.

    보기엔 간단하지만 발상이 어려워요… 제 기준입니다…ㅠ


    123의 답을 찾아보겠습니다.

    • 12300000은 123의 배수입니다.

    • 12300000 - 123 = 12299877도 123의 배수입니다.

    • 처음 세자리 122와 뒤 세자리 877을 더하면 999가 됩니다.

    • 위의 수의 각 자리 합을 더하면 9 * 5 = 45가 되어 홀수가 됩니다.


    위 처럼 (10^K - 1)의 배수의 자릿수의 합을 보면 뒤에 0이 있는 곳에 N을 빼고 앞에는 N - 1이 되어 둘을 더하게 되면 999 형태의 숫자가 됩니다. 결국 K만큼 9를 더한 값이 이 수의 각 자리 합입니다.


    수의 범위가 10^8이고 9개의 개수가 홀수이어야 안수빈수가 될 수 있기 때문에 10^9-1를 곱한 값은 무조건 안수빈수입니다.


    이 문제를 풀면서 기본적인 수학문제를 어렵게 낼 수 있구나 생각했습니다.

    역시 수학은 어려워요…



    소스 코드

    #include <bits/stdc++.h>
    #define FIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
    #define ll long long
    using namespace std;
    
    int main() {
    	FIO;
    	int t; cin >> t; while (t--) {
    		ll n; cin >> n;
    		cout << (n * ((int)1e9 - 1)) << '\n';
    	}
     	return 0;
    }
    


    PSBOJMathPlatinum Share Tweet +1

    CATALOG