[λ°±μ€] λΈλ£¨νΈν¬μ€ - 2231. λΆν΄ν©
λ¬Έμ
μ΄λ€ μμ°μ Nμ΄ μμ λ, κ·Έ μμ°μ Nμ λΆν΄ν©μ Nκ³Ό Nμ μ΄λ£¨λ κ° μ리μμ ν©μ μλ―Ένλ€. μ΄λ€ μμ°μ Mμ λΆν΄ν©μ΄ NμΈ κ²½μ°, Mμ Nμ μμ±μλΌ νλ€. μλ₯Ό λ€μ΄, 245μ λΆν΄ν©μ 256(=245+2+4+5)μ΄ λλ€. λ°λΌμ 245λ 256μ μμ±μκ° λλ€. λ¬Όλ‘ , μ΄λ€ μμ°μμ κ²½μ°μλ μμ±μκ° μμ μλ μλ€. λ°λλ‘, μμ±μκ° μ¬λ¬ κ°μΈ μμ°μλ μμ μ μλ€.
μμ°μ Nμ΄ μ£Όμ΄μ‘μ λ, Nμ κ°μ₯ μμ μμ±μλ₯Ό ꡬν΄λ΄λ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ°μ N(1 ≤ N ≤ 1,000,000)μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ λ΅μ μΆλ ₯νλ€. μμ±μκ° μλ κ²½μ°μλ 0μ μΆλ ₯νλ€.
μμ μ λ ₯1
216
μμ μΆλ ₯1
198
μκ°
μ²μμ λ¬Έμ λ₯Ό λ΄€μλ λλμ μΌλ‘ ν릴 κ±° κ°μλ€. κ·Έλμ λͺ«κ³Ό λλ¨Έμ§ κ΅¬νκΈ° λ¬Έμ λ‘ μκ°μ νκ³ divide() ν¨μλ₯Ό ꡬννλ€. κ·Έλ¬λ€κ° νμμμμ΄ λ κΊΌκ°μ λΆμκ°μ forλ¬Έμ μΈλ±μ€λ₯Ό nλΆν° μμνλ €κ³ νλλ°, λ¬Έμ λ₯Ό λ€μ λ΄€λλ κ°μ₯ μμ μμ±μλ₯Ό ꡬνλ κ²μ΄κΈ° λλ¬Έμ λ€μ 0λΆν° μμνλ κ²μΌλ‘ λ°κΎΈκ³ μ μΆνλ€.
κ·Έλ°λ°, νλ Έμ΅λλ€... μλ μ?!! μ¬κΈ°μ λνλ² λ¬Έμ λ₯Ό μ λλ‘ μ½μ§ μμ μ€μλ₯Ό λ°κ²¬νλ€. μΆλ ₯μμ μμ±μκ° μλ κ²½μ°μλ 0μ μΆλ ₯ν΄μΌλλ€λ 쑰건μ΄μλ€. κ·Έλμ flagλ₯Ό μ μΈν΄μ μ°Ύμ§ λͺ»ν κ²½μ° 0μ μΆλ ₯νκ²λ κ³ μ³€λ€.
flagλ₯Ό falseλ‘ μ μΈνκ³ μ°Ύμμλ trueλ‘ νλ κ²λ³΄λ€ flagλ₯Ό trueλ‘ νλ κ²μ΄ μκ°μ λ λ¨μΆμν¬μ μλ€.(4ms)
μμ±ν μ½λ
#include <iostream>
using namespace std;
int s,r;
int n;
bool flag = true;
int divide(int m, int sum){
s = m/10;
r = m%10;
if(s!=0){
sum += r;
return divide(s, sum);
}else{
sum += r;
}
return sum;
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
int result;
for(int i=0; i<n; i++){
result = divide(i, i);
if(result == n){
cout << i <<"\n";
flag = false;
break;
}
}
if(flag){
cout << 0 <<"\n";
}
return 0;
}