π»
[λ°±μ€] λμ κ³νλ² - 1904. 01νμΌ λ³Έλ¬Έ
[λ°±μ€] λμ κ³νλ² - 1904. 01νμΌ
λν¨λ 2020. 2. 12. 14:19λ¬Έμ
μ§μμ΄μκ² 2μ§ μμ΄μ κ°λ₯΄μ³ μ£ΌκΈ° μν΄, μ§μμ΄ μλ²μ§λ κ·Έμκ² νμΌλ€μ μ λ¬Όν΄μ£Όμ ¨λ€. κ·Έλ¦¬κ³ μ΄ κ°κ°μ νμΌλ€μ 0 λλ 1μ΄ μ°μ¬ μλ λ±μ₯μ νμΌλ€μ΄λ€.
μ΄λ λ μ§κΆμ λμ£Όκ° μ§μμ΄μ 곡λΆλ₯Ό λ°©ν΄νκΈ° μν΄ 0μ΄ μ°μ¬μ§ λ±μ₯μ νμΌλ€μ λΆμ¬μ ν μμΌλ‘ μ΄λ£¨μ΄μ§ 00 νμΌλ€μ λ§λ€μλ€. κ²°κ΅ νμ¬ 1 νλλ§μΌλ‘ μ΄λ£¨μ΄μ§ νμΌ λλ 0νμΌμ λ κ° λΆμΈ ν μμ 00νμΌλ€λ§μ΄ λ¨κ² λμλ€.
κ·Έλ¬λ―λ‘ μ§μμ΄λ νμΌλ‘ λ μ΄μ ν¬κΈ°κ° NμΈ λͺ¨λ 2μ§ μμ΄μ λ§λ€ μ μκ² λμλ€. μλ₯Ό λ€μ΄, N=1μΌ λ 1λ§ λ§λ€ μ μκ³ , N=2μΌ λλ 00, 11μ λ§λ€ μ μλ€. (01, 10μ λ§λ€ μ μκ² λμλ€.) λν N=4μΌ λλ 0011, 0000, 1001, 1100, 1111 λ± μ΄ 5κ°μ 2μ§ μμ΄μ λ§λ€ μ μλ€.
μ°λ¦¬μ λͺ©νλ Nμ΄ μ£Όμ΄μ‘μ λ μ§μμ΄κ° λ§λ€ μ μλ λͺ¨λ κ°μ§μλ₯Ό μΈλ κ²μ΄λ€. λ¨ νμΌλ€μ 무νν λ§μ κ²μΌλ‘ κ°μ νμ.
μ λ ₯
첫 λ²μ§Έ μ€μ μμ°μ Nμ΄ μ£Όμ΄μ§λ€.(N ≤ 1,000,000)
μΆλ ₯
첫 λ²μ§Έ μ€μ μ§μμ΄κ° λ§λ€ μ μλ κΈΈμ΄κ° NμΈ λͺ¨λ 2μ§ μμ΄μ κ°μλ₯Ό 15746μΌλ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯1
4
μμ μΆλ ₯1
5
μκ°
λͺ©ν : μ§μμ΄κ° λ§λ€ μ μλ νμΌ μλ₯Ό μΈμ. κ·μΉμ°ΎκΈ°.
N=1 -> 1
(a,b) (0,1)
N=2 -> 00, 11
(a,b) (1,0) (0,2)
N=3 -> 001, 100, 111
(a,b) (1,1) (0,3)
N=4 -> 0000, 0011, 1001, 1100, 1111
(a,b) (2,0) (1,2) (0,4)
N=5 -> 00001, 00100, 00111, 10011, 11001, 11111, 10000, 11100
(a,b) (2,1) (1,3) (0,5)
f(1) = 1
f(2) = 1 + 1 = 2
f(3) = 2 + 1 = 3
f(4) = 1 + 3 + 1 = 5
f(5) = 3 + 4 + 1 = 8
μ«μμμ 2λ₯Ό λλ => 00νμΌμ μ΅λ κ°―μ => a
μ«μμμ 2λ‘ λλ λλ¨Έμ§ => 1νμΌμ μ΅μ κ°―μ => b
"κ°μ κ²μ ν¬ν¨νλ μμ΄" f(n) = (a+b)! / a! * b!
νμ¬ μ΄λ°μμΌλ‘
첫λ²μ§Έλ‘, κ³μ°μμ μ°ΎμλΌ μ μμκ³ ,
λλ²μ§Έλ‘, f(n) = f(n-1)+f(n-2) λΌλ κ·μΉλ μ°Ύμ μ μμλ€.
λ¨Όμ , 첫λ²μ§Έ λ°©λ²μ μ΄μ©ν΄μ μ½λλ₯Ό μμ±ν΄ 보μλ€.
#include <iostream>
using namespace std;
int n;
int a, b;
int cal(int a, int b);
int factorial(int num);
int cal(int a, int b){
int result = 0;
if(a == 0 || b == 0){
return 1;
}else{
result = factorial(a+b)/factorial(a)/factorial(b);
return result;
}
}
int factorial(int num){
int k;
if(num == 0 || num == 1){
return num;
}else{
k = num;
for(int i=num-1; i>0; i--){
k *= i;
}
return k;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
int cnt = 0;
cin >> n;
a = n/2;
b = n%2;
for(int i=a; i>=0; i--){
//cout << cal(i, b) << " "<< i <<" "<< b <<"\n";
cnt += cal(i,b);
b += 2;
}
if(a==1){
cout << 1;
}else{
cout << cnt%15746 << "\n";
}
}
λ°νμ μλ¬κ° λ΄λ€.
κ·Έλμ λλ²μ§Έ λ°©λ²μΌλ‘ νμ΄λ³΄κ³ μ νμλ€.
#include <iostream>
#define max 1000001
using namespace std;
int n;
long long arr[max];
int result=0;
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
if(n==1){
cout << 1;
}else if(n==2){
cout << 2;
}else{
for(int i=3; i<=n; i++){
arr[i] = arr[i-1] + arr[i-2];
}
result = arr[n] % 15746;
cout << result;
}
cout << "\n";
}
ν μ€νΈ μΌμ΄μ€λ₯Ό λ£μ΄λ΄€μλλ λ΅μ΄ μλμλλ°, μ΄μνκ² μ μΆνλ νλ Έλ€κ³ λμλ€.
λͺ¨λλ¬ μ°μ°μ λν μ΄ν΄κ° λΆμ‘±νλ κ±° κ°λ€.
(a+b) mod m = ((a mod m) + (b mod m)) mod m (modλ % μ°μ°κ³Ό κ°λ€. m:λλλ μ)μ΄κΈ° λλ¬Έμ νλ Έλ€κ³ λμ€λ κ²μ΄μλ€. μ¦, μμ μμ±ν μ½λμμ μμ νμλ©΄ elseλ¬Έ μμ arr[i] = arr[i-1] % 15746 + arr[i-2] % 15746 μΌλ‘ κ³ μ³μ£Όκ±°λ μλμ μ½λ μ²λΌ μμ±ν΄μΌνλ€.
μ΅μ’ μ μΌλ‘ μμ±ν μ½λλ₯Ό λ΄€μ λλ μ΄λ €μ΄ λ¬Έμ λ μλμμ§λ§ μΆκ°μ μΈ κ³΅λΆλ₯Ό ν λ¬Έμ μλ€. μ΄μ°μν 곡λΆνμ§κ° μ€λλμ΄μ κΈ°μ΅μ΄ κ°λ¬Όκ°λ¬Όνλλ° λͺ¨λλ¬ μ°μ°μ λν΄μ νλ² λ μ λ¦¬ν΄ λ³Ό κΈ°νμλ€.
β»λͺ¨λλ¬ μ°μ°
μμ μ μ mμ λνμ¬
- a ≡ b (mod m) μ΄κ³ c ≡ d (mod m) μ΄λ©΄, a + c ≡ b + d (mod m) μ΄κ³ ac ≡ bd (mod m) μ΄λ€.
- (a+b) mod m = ((a mod m) + (b mod m)) mod m
- a x b mod m = ((a mod m) x (b mod m)) mod m
+ ν΄κ²°)
νΌλ³΄λμΉ μμ κ²½μ°, 46λ²μ§Έ μκ° 2,981,215,073 μ΄ λμ΄ int ν λ²μ(2,147,483,648 ~ 2,147,438,647) λ₯Ό μ΄κ³Όνλ€.
http://blog.naver.com/occidere/220787441430
'μκ³ λ¦¬μ¦ > λ¬Έμ νμ΄ Baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] λΆν μ 볡 - 1654. λμ μλ₯΄κΈ° (0) | 2020.02.12 |
---|---|
[λ°±μ€] 그리λ - 11399. ATM (0) | 2020.02.12 |
[λ°±μ€] μ΄λΆ νμ - 1920. μ μ°ΎκΈ° (0) | 2020.02.04 |
[λ°±μ€] λ°±νΈλνΉ - 6603. λ‘λ (0) | 2020.02.03 |
[λ°±μ€] μ¬κ· - 2447. λ³ μ°κΈ° - 10 (0) | 2020.02.02 |