Go: package main

import (
        "fmt"
        "math"
)

var interests [101]float64

func main() {
        var m int
        fmt.Scanf("%d", &m)
        fmt.Printf("%d\n", int(math.Ceil(interest(m)*10))*10000)
}

func interest(m int) (i float64){
        if interests[m] > 0 {
                return interests[m]
        }

        if m == 0 {
                interests[0] = 1.0
                return interests[0]
        }

        if m == 1 {
                interests[1] = 1.05
                return interests[1]
        }
        interests[m] = interest(m/2) * interest(m/2) * interest(m%2)
        return interests[m]
}

C++: #include <bits/stdc++.h>

#define rep(i, n) for (int i = 0; i < int(n); i++)
#define rrep(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define reps(i, n) for (int i = 1; i <= int(n); i++)
#define rreps(i, n) for (int i = int(n); i >= 1; i--)
#define repc(i, n) for (int i = 0; i <= int(n); i++)
#define rrepc(i, n) for (int i = int(n); i >= 0; i--)
#define repi(i, a, b) for (int i = int(a); i < int(b); i++)
#define repic(i, a, b) for (int i = int(a); i <= int(b); i++)
#define each(x, y) for (auto &x : y)
#define all(a) (a).begin(), (a).end()
#define bit(b) (1ll << (b))

using namespace std;

using i32 = int;
using i64 = long long;
using u64 = unsigned long long;
using f80 = long double;
using vi32 = vector<i32>;
using vi64 = vector<i64>;
using vu64 = vector<u64>;
using vf80 = vector<f80>;
using vstr = vector<string>;

inline void yes() { cout << "Yes" << '\n'; exit(0); }
inline void no() { cout << "No" << '\n'; exit(0); }
inline i64 gcd(i64 a, i64 b) { if (min(a, b) == 0) return max(a, b); if (a % b == 0) return b; return gcd(b, a % b); }
inline i64 lcm(i64 a, i64 b) { return a / gcd(a, b) * b; }
inline u64 xorshift() { static u64 x = 88172645463325252ull; x = x ^ (x << 7); return x = x ^ (x >> 9); }
void solve(); int main() { ios::sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(16); solve(); return 0; }
template <typename T> class pqasc : public priority_queue<T, vector<T>, greater<T>> {};
template <typename T> class pqdesc : public priority_queue<T, vector<T>, less<T>> {};
template <typename T> inline void amax(T &x, T y) { if (x < y) x = y; }
template <typename T> inline void amin(T &x, T y) { if (x > y) x = y; }
template <typename T> inline T power(T x, i64 n, T e = 1) { T r = e; while (n > 0) { if (n & 1) r *= x; x *= x; n >>= 1; } return r; }
template <typename T> istream& operator>>(istream &is, vector<T> &v) { each(x, v) is >> x; return is; }
template <typename T> ostream& operator<<(ostream &os, vector<T> &v) { rep(i, v.size()) { if (i) os << ' '; os << v[i]; } return os; }
template <typename T, typename S> istream& operator>>(istream &is, pair<T, S> &p) { is >> p.first >> p.second; return is; }
template <typename T, typename S> ostream& operator<<(ostream &os, pair<T, S> &p) { os << p.first << ' ' << p.second; return os; }

void solve() {
  int n; cin >> n;
  i64 ans = 100000;
  rep(i, n) {
    ans = ans * 105 / 100;
    ans = (ans + 999) / 1000 * 1000;
  }
  cout << ans << '\n';
}

C++: #include <iostream>
#include <math.h>
using namespace std;
 
void test();
int  interest(int debt, float interest_rate, int n);
 
int main(void)
{
    test();
    return 0;
}
 
 
void test()
{
    int debt,n, money;
    float interest_rate;
    debt = 100000;
    interest_rate = 1.05;
    cin >> n;
 
    debt = interest(debt, interest_rate, n);
 
    money = debt % 1000;

	if (money > 0)
	{
		debt = debt - money + 1000;
	}

    cout << debt << endl;
}
 
int interest(int debt, float interest_rate,int n)//??????°???¢???°
{
 
    if (n == 1)
        return debt * interest_rate;
    else
        return interest(debt, interest_rate, n - 1) * interest_rate;
}

C++: #include <iostream>
#include <math.h>
using namespace std;
int main(){
	int n , i , w , h ;
	double x , y , z;
	cin >> n ;
	x = 100000;
	for( i=1 ; i<=n ; i++ ){
		x = x*1.05;
		w = x ;
		x = w/100;
		x = x/10;
		x = ceil( x );
		x = x*1000 ;
	}
	y = x ;
	cout << y << endl;
}

C++: #include <iostream>

using namespace std;

int main() {
	int n, money = 100000;
	cin >> n;

	for (int i = 0; i < n; i++) {
		money *= 1.05;
		money = money-(money%1000)+1000;
	}

	cout << money-1000 << endl;

	return 0;
}

C++: // http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0007&lang=jp

#include <iostream>
using namespace std;

int main() {
  int n;
  cin >> n;
  long long x = 100000;
  for (auto i=0; i<n; i++) {
    x *= 1.05;
    if (x%1000 != 0) {
      x = (x/1000 + 1) * 1000;
    }
  }
  cout << x << endl;
}

C++: //----------------------------------------------------
//HEADER
#include<bits/stdc++.h>

//NAMESPACE
using namespace std;

//CONSTANT
const int64_t INF=INT64_MAX;

//FAST I/O
void init(){cin.tie(0);ios::sync_with_stdio(false);}
//----------------------------------------------------

int64_t solve(int n){
  int64_t dept=100000;

  for(int i=0;i<n;i++){
    dept=(int)(dept*1.05);
    if(dept%1000!=0){
      dept+=(1000-dept%1000);
    }
  }

  return dept;
}

int main(){
  init();

  int64_t n;
  cin >> n;

  cout << solve(n) << endl;

  return 0;
}

C++: #include <iostream>
using namespace std;

int main(void){
  int n,money=100000;

  cin >> n;
  for( int i = 0 ; i < n ; i++ ){
    money *= 1.05;
    if( money % 1000 != 0 ) money += 1000 - ( money % 1000 );
  }

  cout << money << endl;

  return 0;
}

C++: #include <iostream>
using namespace std;

int main()
{
	int i, n;
	int money=100000;
	
	cin >> n;
	
	for(i=1; i<=n; i++){
		money *= 1.05;
		money = (money+999) / 1000 * 1000;
	}
	cout << money << endl;
		
	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
	double money = 100000;
	int n;
	cin >> n;
	for( int i=0; i<n; i++ ){
		money = (double)money * 1.05;
		int up = money / 1000;
		if( (int)(money - up) > 0 )
			money = (up+1)*1000;
		else
			money = up * 1000;

	}
	cout << money << endl;
	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
    int m;
    cin >> m;
    int n = 100000;
    for(int i=0;i<m;i++){
        n = n * 1.05;
        if(n%1000>0) n=n/1000*1000+1000;
    }
    cout << n;
    return 0;
}

C++: #include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;

int main(){
	int i,n,x=100000;
	cin >> n;
	for(i=0;i<n;i++){
		x*=1.05;
		if(x%1000!=0) x=(x/1000+1)*1000;
	}
	cout << x << endl;
	return 0;
}

C++: #include <iostream>

using namespace std;

int main(){
	double debt = 100000.0;
	int n, r;
	cin >> n;
	while ( n-- > 0 ){
		debt *= 1.05;
		r = (int)debt % 1000;
		if ( r != 0 ){
			debt = debt - r + 1000;
		}
	}
	cout << (int)debt << endl;
	
	return 0;
}

C++: #include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
#define shosu(x) fixed<<setprecision(x)
using namespace std;
int main(){
	int num,tmp,money=100000;
	cin>>num;
	for(int i=0;i<num;i++){
		money*=1.05;
		tmp=money%1000;
		if(tmp>0) money=money-tmp+1000; 
	}
	cout<<money<<endl;
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;

	int borrowing = 100000 / 1000;

	for(int i = 0; i < n; ++i) {
		borrowing = ceil(borrowing * 1.05);
	}

	cout << borrowing * 1000 << endl;

	return EXIT_SUCCESS;
}

C++: #include <cstdio>

using namespace std;

int main() {
  int n;
  scanf("%d", &n);
  int debt = 100000;
  for (int i=0;i<n;i++) {
    debt = debt*105/100;
    debt = (debt+999)/1000;
    debt = debt*1000;
  }
  printf("%d\n", debt);
  return 0;
}

C++: #include <cstdio>

int main(){
    int debt=100000,n;
    scanf("%d", &n);

    for(int i = 0; i < n; i++){
        debt = debt * 1.05;
        if(debt - (debt/1000)*1000 > 0){
            debt = (debt/1000)*1000 + 1000;
        }
    }

    printf("%d\n",debt);
    return 0;
}