문제
#16680: 안수빈
체크섬이란 무엇입니까? 숫자를 소수로 나타낼 때 각 자리의 합을 의미합니다.
예를 들어, 1093의 숫자 합계는 1 + 0 + 9 + 3 = 13입니다.
숫자 합계가 짝수인 양의 정수가 있습니다.
www.acmicpc.net
설명
플래티넘에게는 문제를 이해하는 것이 매우 쉽습니다.
문제는 N의 배수 중에서 각 숫자의 합을 찾는 것이며 그 합은 홀수입니다.
숫자는 int의 범위를 벗어나므로 long long을 사용해야 합니다!
(늦게알아서 10분낭비.. )
자릿수를 구해야 하므로 나머지와 나눗셈 연산자로 풀었습니다.
%2의 합이 1이면 홀수이므로 출력하고 종료한다.
해당 번호가 없으면 N += N을 실행하여 다음 번호를 검색합니다(여러 번).
이런 관점에서 보면 정말 단순한 백금처럼 보이지만, 이 문제에 대한 의외의 해결책이 있습니다.
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
long long N;
cin >> N;
while (1) {
long long sum = 0;
long long temp = N;
while (temp !
= 0) {
sum += temp % 10;
temp /= 10;
}
if (sum % 2 == 1) {
cout << N << "\n";
break;
}
else {
N += N;
}
}
}
return 0;
}
뜻밖에
아니, 그냥 999999999(10억 – 1)를 곱하면?
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
long long N;
cin >> N;
cout << N * 999999999 << "\n";
}
return 0;
}