Notice
Recent Posts
Recent Comments
Link
DY N DY
실력키우기 각 자릿수의 합(C++) 본문
2812 : 각 자리수의 합
제한시간: 1Sec 메모리제한: 128mb
해결횟수: 619회 시도횟수: 1569회
자연수 N을 입력받아서 각 자리수의 합이 한자리가 될 때까지 그 합을 출력하는 프로그램을 작성하시오.
※ int형 변수로는 232-1 까지 입력받을 수 있다.
[Copy]1234567891 | [Copy]46 10 1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /************************************************************** Problem: 2812 User: a132034 Language: C++ Result: Success Time:0 ms Memory:1740 kb ****************************************************************/ #include <iostream> using namespace std; int main() { long long in; const long long c = 1000000000000000000; int res = 0; long long tmpC = c; cin >> in; while (1) { res += in / tmpC; in -= in / tmpC * tmpC; if (tmpC == 1) { cout << res << endl; if (res < 10) { break ; } in = res; res = 0; tmpC = c; } tmpC /= 10; } return 0; } |
int형 변수로는 한계가 있기 때문에 long long 타입을 사용했다.
사실 저 c는 가변적으로 전처리를 통해 얻어낼 수 있지만 여기선 그정도까지는 필요 없다고 판단해서 상수로 집어넣었다.
그외 특별히 어려운 점은 없고 나누어 주며 몫을 res 변수에 넣고 10 이하가 될 때 까지 반복한다.
'PARK > ALGORITHM' 카테고리의 다른 글
알고리즘 색종이만들기(C++) (0) | 2016.04.11 |
---|---|
실력키우기 소수구하기(C++) (0) | 2016.04.10 |
실력키우기 그릇(JAVA) (0) | 2016.04.06 |
실력키우기 윤년(C) (0) | 2016.04.06 |
실력키우기 이진수(C++) (0) | 2016.04.05 |