반응형

문제 링크

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

풀이 )

  n을 시작으로 1까지 각 숫자가 한수에 속하는지 확인했다.

  100 미만의 숫자는 모두 한수이고, 100 이상의 경우 앞에서부터 두자리의 차를 이용해 자리 끝까지 확인하여 등차가 아니면 0을 리턴하도록 함수를 만들었다.

  

#include <iostream>
#include <string>

using namespace std;

int func(int n){
    if(n < 100)
        return 1;

    string str = to_string(n);
    int len = str.length();
    int d = str[1]-str[0];
    for(int i = 2; i < len; ++i){
        if(str[i]-str[i-1] != d)
            return 0;
    }
    return 1;
}

int main(void){
  int n, ans = 0;
  cin >> n;
  while(n){
      ans += func(n--);
  }
  cout << ans << '\n';
  return 0;
}
반응형

+ Recent posts