1 #include <iostream> 2 using namespace std; 3 4 const int mod = 10003; 5 const int num = 2; 6 7 struct mat { 8 long long m[num][num]; 9 }; 10 11 12 13 mat mul(mat a, mat b) { 14 mat ans; 15 for (int i = 0; i<num; i++) 16 for (int j = 0; j < num; j++) { 17 ans.m[i][j] = 0; 18 for (int k = 0; k < num; k++) 19 ans.m[i][j] += (a.m[i][k] * b.m[k][j]); 20 ans.m[i][j] %= mod; 21 } 22 return ans; 23 } 24 25 mat quick_pow(mat a, long long b) { 26 mat ans{ 27 1,0, 28 0,1 29 }; 30 mat tmp = a; 31 32 while (b>0) { 33 if (b & 1) 34 ans = mul(ans, tmp); 35 tmp = mul(tmp, tmp); 36 b >>= 1; 37 } 38 return ans; 39 } 40 41 int main() { 42 int n; 43 while (cin>>n) 44 { 45 mat a{ 46 1,1, 47 1,0 48 }; 49 mat ans = quick_pow(a, n); 50 cout << ans.m[0][1] << endl; 51 } 52 return 0; 53 }