투포인터를 이용하여 연속한 숫자의 합이 입력 값 N과 같아지는 경우의 수를 찾는 문제이다.
first, second 두 변수를 이용하여
sum <= N 경우 second를 증가시키고
sum > N 경우 first를 증가시켰다.
#include <bits/stdc++.h>
using namespace std;
void num2018(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N; cin>>N;
int count = 0;
int first = 1;
int second = 1;
int sum = 0;
while(1){
if(sum == N)
count++;
if(first == N )
break;
if(sum <= N){
sum += second;
second++;
}
else if(sum > N){
sum -= first;
first++;
}
}
if(N==1)
cout<<"1\n";
else
cout<<count<<"\n";
}