SWEA::1265 달란트2
N=10일때
M=2 : (1,9) / (2,8)/ (3,7)/ (4,6)/ (5,5)/ 의 경우가 가능한데 가장 큰 값은 중간값인 (5,5)인 경우이다.
이처럼 N/M을 통해 중간 값을 찾아주면 되는데 나머지가 생기는 경우 나머지 만큼의 경우에 대해서는 +1 해준 값을 곱해주면된다. 아마 가장 큰 값이 N=100, M=32인 경우 같은데 이경우 16자리가 나오고 이는 C++기준 long long형으로 연산시 연산이 가능하다.
P.S) long long 형 처음 출력해봤다. 굉장히 긴게 신기하다.
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 | #include <stdio.h> using namespace std; int n, m, x, y; long long res; int main() { int tc; scanf("%d", &tc); for (int t = 1; t <= tc; t++) { res = 1; scanf("%d %d", &n, &m); x = n / m; y = n % m; for (int i = 0; i < m - y; i++) { res *= x; } x++; for (int i = 0; i < y; i++) { res *= x; } printf("#%d %lld\n", t, res); } } | cs |
'SWEA::문제풀이' 카테고리의 다른 글
2105 디저트 카페 (0) | 2018.01.21 |
---|---|
2817 부분수열의 합 (0) | 2018.01.19 |
1494 사랑의 카운슬러 (0) | 2018.01.14 |
1952 수영장 (1) | 2018.01.09 |
1219 길찾기 (0) | 2018.01.08 |