#include #include #include #include #include using namespace std; int main() { //整数nを入力する //整数nをiでわる //わった結果が整数であれば,iと結果を文字列にする //連結したものをset配列に同じのがないか探索する //発見されなければ、配列setに格納して、countする //整数でないならば先頭にもどる //これを1から√nまで繰り返す int n=0; cin >> n; int rn = static_cast(sqrt(n)); int count=0; vector set(1,"0");//候補を記憶する配列 for (int i = 1;i <= rn;i++) { double ans = n / i; if (n%i!=0)continue;//制数でないならば、先頭に戻る string str1 = to_string(i); string str2 = to_string(static_cast(ans)); auto itr1 = find(set.begin(),set.end(),str1+str2); if (itr1 == set.end()) { string buff = str1 + str2; set.push_back(buff); count++; } auto itr2 = find(set.begin(),set.end(),str2+str1); if (itr2 == set.end()) { string buff = str2 + str1; set.push_back(buff); count++; } } cout << count; return 0; }