Problem:
Score : 200 points

Problem Statement

The development of algae in a pond is as follows.

Let the total weight of the algae at the beginning of the year i be x_i gram. For i≥2000, the following formula holds:

x_{i+1} = rx_i - D

You are given r, D and x_{2000}. Calculate x_{2001}, ..., x_{2010} and print them in order.

Constraints

2 ≤ r ≤ 5

1 ≤ D ≤ 100

D < x_{2000} ≤ 200

All values in input are integers.

Input

Input is given from Standard Input in the following format:

r D x_{2000}

Output

Print 10 lines. The i-th line (1 ≤ i ≤ 10) should contain x_{2000+i} as an integer.

Sample Input 1

2 10 20

Sample Output 1

30
50
90
170
330
650
1290
2570
5130
10250

For example, x_{2001} = rx_{2000} - D = 2 \times 20 - 10 = 30 and x_{2002} = rx_{2001} - D = 2 \times 30 - 10 = 50.

Sample Input 2

4 40 60

Sample Output 2

200
760
3000
11960
47800
191160
764600
3058360
12233400
48933560

Solution in Rust (1.15.1) (judge verdict: Accepted)

// This code is generated by [cargo-atcoder](https://github.com/tanakh/cargo-atcoder)
// Original source code:
/*
#[allow(unused_macros)]
macro_rules! debug {
	($($a:expr),*) => {
		println!(concat!($(stringify!($a), " = {:?}, "),*), $($a),*);
	}
}

#[allow(dead_code)]
const MOD: usize = 1e9 as usize + 7;

fn main() {
	let (r, w) = (std::io::stdin(), std::io::stdout());
	let mut sc = IO::new(r.lock(), w.lock());

	let r: usize = sc.read();
	let d: usize = sc.read();
	let mut x: usize = sc.read();
	for i in 0..10 {
		x = r * x - d;
		println!("{}", x);
	}
}

pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>);

impl<R: std::io::Read, W: std::io::Write> IO<R, W> {
	pub fn new(r: R, w: W) -> IO<R, W> {
		IO(r, std::io::BufWriter::new(w))
	}
	pub fn write<S: std::ops::Deref<Target = str>>(&mut self, s: S) {
		use std::io::Write;
		self.1.write(s.as_bytes()).unwrap();
	}
	pub fn read<T: std::str::FromStr>(&mut self) -> T {
		use std::io::Read;
		let buf = self
			.0
			.by_ref()
			.bytes()
			.map(|b| b.unwrap())
			.skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t')
			.take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t')
			.collect::<Vec<_>>();
		unsafe { std::str::from_utf8_unchecked(&buf) }
			.parse()
			.ok()
			.expect("Parse error.")
	}
	pub fn read_vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> {
		(0..n).map(|_| self.read()).collect()
	}
	pub fn read_chars(&mut self) -> Vec<char> {
		self.read::<String>().chars().collect()
	}
	pub fn read_pairs<T: std::str::FromStr>(&mut self, n: usize) -> Vec<(T, T)> {
		(0..n)
			.map(|_| (self.read::<T>(), self.read::<T>()))
			.collect::<Vec<(T, T)>>()
	}
	pub fn read_matrix<T: std::str::FromStr>(&mut self, n: usize, m: usize) -> Vec<Vec<T>> {
		(0..n)
			.map(|_| (0..m).map(|_| self.read()).collect())
			.collect()
	}
}
*/

fn main() {
    let exe = "/tmp/binBC62FBE8";
    std::io::Write::write_all(&mut std::fs::File::create(exe).unwrap(), &decode(BIN)).unwrap();
    std::fs::set_permissions(exe, std::os::unix::fs::PermissionsExt::from_mode(0o755)).unwrap();
    std::process::exit(std::process::Command::new(exe).status().unwrap().code().unwrap())
}

fn decode(v: &str) -> Vec<u8> {
    let mut ret = vec![];
    let mut buf = 0;
    let mut tbl = vec![64; 256];
    for i in 0..64 { tbl[TBL[i] as usize] = i as u8; }
    for (i, c) in v.bytes().filter_map(|c| { let c = tbl[c as usize]; if c < 64 { Some(c) } else { None } }).enumerate() {
        match i % 4 {
            0 => buf = c << 2,
            1 => { ret.push(buf | c >> 4); buf = c << 4; }
            2 => { ret.push(buf | c >> 2); buf = c << 6; }
            3 => ret.push(buf | c),
            _ => unreachable!(),
        }
    }
    ret
}

const TBL: &'static [u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const BIN: &'static str = "<base64-encoded ELF executable removed>";