Problem:
Score : 200 points

Problem Statement

An integer X is called a Harshad number if X is divisible by f(X), where f(X) is the sum of the digits in X when written in base 10.

Given an integer N, determine whether it is a Harshad number.

Constraints

1?N?10^8

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print Yes if N is a Harshad number; print No otherwise.

Sample Input 1

12

Sample Output 1

Yes

f(12)=1+2=3. Since 12 is divisible by 3, 12 is a Harshad number.

Sample Input 2

57

Sample Output 2

No

f(57)=5+7=12. Since 57 is not divisible by 12, 12 is not a Harshad number.

Sample Input 3

148

Sample Output 3

No

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
using namespace std;

int main() {
  int x, y;
  cin >> x;
  y = x;
  
  // 桁数
  int n = 1;
  while(y >= 10){
  	y /= 10;
    n++;
  }
  
  vector<int> vec(n+1);
  int sum = 0;
  
  if (n > 1) {
     for (int i = 0; i < n; i++) {
       if(i == 0){
         vec.at(i) = x/10;
         sum += x % 10;
       } else {
         vec.at(i) = vec.at(i-1)/10;
         sum += vec.at(i-1) % 10;
       }
       
       //if(vec.at(i) < 10) sum += vec.at(i);
     }
  } else {
  	sum = x;
  }
  
  if (x % sum == 0){
  	cout << "Yes" << endl;
  } else {
  	cout << "No" << endl;
  }
}