UVA 10025 (13.08.06)
1959 단어 uva
Theproblem
Given the following formula, one can set operators '+' or '-' instead of each '?', in order to obtain a given k ? 일?2 ? ... ? n = k
For example: to obtain k = 12 , the expression to be used will be: - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7
TheInput
The first line is the number of test cases, followed by a blank line.
Each test case of the input contains integer k (0<=|k|<=1000000000).
Each test case will be separated by a single line.
The Output
For each test case, your program should print the minimal possible n (1<=n) to obtain k with the above formula.
Print a blank line between the outputs for two consecutive test cases.
Sample Input
2
12
-3646397
Sample Output
7
2701
문제는 거추장스럽지 않아요~
방법:
가령sum1=a1+a2+a3+...+an + x >= k
반면sum2=a1+a2+a3+...+an - x = k
그러면 sum1. - sum2 = 2x.
즉, k의 양과 음을 막론하고 모두 k를 정수로 처리하고 정수를 누적하여sum1을 얻는 것과 전당정수로 처리하지 않는sum2의 차이는 짝수(2x, 즉 마이너스의 절대치의 2배~)
그러므로 모두 1에서 n으로 더하세요. (sum>=k&(sum-k)%2=0)
AC 코드:
#include<stdio.h>
int T;
int main() {
scanf("%d", &T);
while(T--) {
int k;
int sum = 0;
scanf("%d", &k);
if(k < 0)
k = (-1 * k);
for(int i = 1; ;i++) {
sum += i;
if(sum >= k && (sum-k) % 2 == 0) {
printf("%d
", i);
break;
}
}
if(T)
printf("
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
UVA - 10986 Sending email(Dijkstra 인접 테이블 + 우선 순위 대기열 최적화)제목 대의: s점에서 t점까지의 최소 거리를 구하는 그림을 주세요. 확인: 적나라한 최단길이지만 n이 너무 크면 인접 행렬을 사용할 수 없기 때문에 Dijkstra에 대한 인접표 + 우선 대기열 최적화가 필요합니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.