2000 monedas de oro (monedas): mesa de juego de simulación, pequeño problema del agua

Sujeto al efecto

El rey del oro ya que los salarios pagados a leal caballero. El primer día, Knight recibió una moneda de oro, dos días (días dos y tres) años, recibió dos monedas de oro todos los días, tres días más tarde (el cuarto, cinco o seis días), el diario recibió tres monedas de oro, cuatro días más tarde (siete, ocho, nueve, diez años), recibieron cuatro de oro ...... este modo día nómina siempre seguirá así: cuando N N días consecutivos para recibir monedas de oro todos los días, caballeros N + 1 días consecutivos después, las monedas recibidas N + 1 (N es cualquier entero positivo) todos los días.

Usted tiene que escribir un programa para determinar desde el primer día de un número determinado de días, los Caballeros ganaron un total de cuántas monedas de oro.

análisis de las ideas

Mirar el código que dirigir, fácil de entender

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;

#define ll long long
#define MAX	10005
ll arr[MAX];

int main() {
	ll cnt = 1, num = 1; arr[0] = 0;
	for (ll i = 1; i < MAX; i++) {
		arr[i] = arr[i - 1] + num;
		cnt--;
		if (cnt == 0)num++, cnt = num;
	}
	while (cin >> cnt && cnt)cout << cnt << ' ' << arr[cnt] << endl;
}
Publicados 186 artículos originales · alabanza ganado 13 · vistas 9314

Supongo que te gusta

Origin blog.csdn.net/csyifanZhang/article/details/105184844
Recomendado
Clasificación