oj1272: Somas Herd

题目要求
As vacas no rebanho do agricultor John são numerados e marcados com números inteiros consecutivos de 1 a N (1 <= N <= 10 milhões). Quando as vacas vêm para o celeiro para a ordenha, eles sempre vêm em ordem seqüencial de 1 a N.

John Farmer, que se formou em matemática na faculdade numera e adora, muitas vezes procura padrões. Ele notou que quando ele tem exatamente 15 vacas em seu rebanho, há precisamente quatro maneiras que os números em qualquer conjunto de um ou vacas mais consecutivos pode adicionar até 15 (o mesmo que o número total de vacas). Eles são: 15, 7 + 8, 4 + 5 + 6, e 1 + 2 + 3 + 4 + 5.

Quando o número de vacas no rebanho é 10, o número de maneiras que ele pode resumir vacas consecutivos e obter 10 gotas a 2: ou seja, 1 + 2 + 3 + 4 e 10.

Escreva um programa que irá calcular o número de maneiras fazendeiro John pode somar os números de vacas consecutivos para igualar N. Não use precomputation para resolver este problema.
Entrada

  • Linha 1: Um único número inteiro: N
    Saída
  • 1 Line: A é um único que Integer Número de vaca consecutivo maneiras de N. SUM marcas podem
    Amostra de Entrada
    Raw
    15
    do Sample Output
    Raw
    . 4
    é simplesmente um número para ver o que, cumulativamente, tal como 10 a 1 + 2 + 3 + 4 e 10, o resultado é 2.
    travessia anterior continua a partir do olhar e acumulado em um número do número, maior ou igual Yuan Shu n sei
    o código completo
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<math.h>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
	int n, sum = 0, i, r = 0, k;
	cin>>n;
	k = n;
	for (i = n; i >= 1; i--)
	{
		sum += i;
		if (sum == n)
			r++;
		else if (sum > n)
			sum -= k--;
	}
	cout<<r<<endl;
	return 0;
}
Publicado 38 artigos originais · ganhou elogios 27 · vista 3183

Acho que você gosta

Origin blog.csdn.net/qq_45891413/article/details/104933337
Recomendado
Clasificación