[μΈνλ° C++] 27. N!μ ννλ²
βοΈ λ¬Έμ
μμμ Nμ λνμ¬ N!μ 1λΆν° NκΉμ§μ κ³±μ μλ―Ένλ€.
μ΄λ¬ν ν° μλ₯Ό νννλ λ°©λ²μΌλ‘ μμλ€μ κ³±μΌλ‘ νννλ λ°©λ²μ΄ μλ€.
μλ₯Όλ€μ΄ 825 = 0 1 2 0 1 λ‘ ννκ°λ₯νλ°, μ΄λ 2λ μκ³ , 3μ 1λ², 5λ 2λ², 7μ μκ³ , 11μ 1λ²μ κ³±μ΄λΌλ μλ―Έμ΄λ€.
μ΄μ κ°μ΄ λ³ννλ νλ‘κ·Έλ¨μ μμ±ν΄λ³΄μ.
π§ μ λ ₯
5
π μΆλ ₯
5! = 3 1 1
β¨ 1νΈ (κ°μ νμ΄)
μμλ₯Ό λ°°μ΄λ‘ λ§λ€μ§, λ§λ λ€λ©΄ μ λ ₯λ nκΉμ§μ μμμ κ°―μλ§νΌ λ§λ€μ΄μΌν μ§? λ κ·Έλ λ€λ©΄, κ·Έ λ§νΌ μμνλ³κΈ°λ₯Ό κ΅΄λ €μ ν΄μΌνλλ° μ΄κ² ν¨μ¨μ μ΄μ§ μμ κ² κ°μ. nκΉμ§μ λͺ¨λ μλ₯Ό λ°°μ΄λ‘ λ§λλ κ² κ°μ§ μμ. μμλ§ μΉ΄μ΄ν ν΄μΌνλκΉ. μ΄λ»κ² νμ΄μΌν μ§ νλ¨μ΄ μμμ κ°μνμ΄λ₯Ό λ³΄κΈ°λ‘ νμλ€.
κ°μνμ΄ π λ°°μ΄μ λ§λλ κ² λ§μ. nκΉμ§μ κ°λ€ λͺ¨λ. λ¨, 2λΆν° μμΈμλΆν΄ κ²Έ λ°°μ΄μ ν΄λΉ μμμ ++λ₯Ό ν΄μ€λ€. λ§μ½, 8κ³Ό κ°μ μκ° μλ€λ©΄, 8/2 = 4μΈλ°, λ°λ‘ 3μΌλ‘ λλ μ£Όλ κ²μ΄ μλλΌ, 2λ‘ λλ μ μμ λκΉμ§ κ³μν΄μ λλ μ€λ€λ κ²μ΄ ν¬μΈνΈ. κ·Έλ¬λ€κ° ν΄λΉκ°μ΄ 1μ΄ λ λ whileλ¬Έ νμΆ
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int main(void){
//freopen("input.txt", "rt", stdin);
int n, tmp, j;
cin >> n;
vector<int> a(n+1);
for(int i = 2; i <= n; ++i){
tmp = i;
j = 2;
while(true){
if(tmp % j == 0){
tmp = tmp / j;
a[j]++;
}
else{
j++;
}
if(tmp == 1) break;
}
}
cout << n << "! = ";
for(int i = 2; i <=n; ++i){
if(a[i] != 0){
cout << a[i] << ' ';
}
}
return 0;
}