oj1272:群れの和

题目要求
農夫ジョンの群れに牛を1からNまでの連続した整数(1 <= N <= 10,000,000)と番号とブランドされます。牛は搾乳のための納屋に来たとき、彼らは常に1からNまで順番に来ます

大学や愛数字で数学を専攻ファーマージョンは、多くの場合、パターンを探します。彼は彼が彼の群れで正確に15頭の牛を持っているとき、一つ以上の連続した牛の任意のセットの数字は、15(牛の合計数と同じ)まで追加することができますことを、4つの方法が正確にあることに気づきました。それらは:15、7 + 8、4 + 5 + 6、+ 4 1 + 2 + 3 + 5。

群れでの牛の数が10である場合には、いくつかの方法は、彼が連続した牛を合計し、2から10滴を得ることができます。すなわち、1 + 2 + 3 + 4と10を。

ジョンはN. DOは、この問題を解決するために事前計算を使用しないで等しくなるように連続した牛の数字を合計することができます方法の農家の数を計算するプログラムを書きます。
入力

  • 1行目:単一の整数:Nの
    出力
  • 1行目:IS A SINGLE N. SUMブランドCANへの連続した牛方法の整数数その
    サンプル入力
    生の
    15
    サンプル出力

    。4は
    、このような10 + 2 + 3 + 1のように、累積的に何を見るために単に数です図4及び図10に示すように、結果は2
    前トラバーサルは、ルックから継続し、数、以上元Shuの数に蓄積N知っている
    完全なコードを
#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;
}
公開された38元の記事 ウォン称賛27 ビュー3183

おすすめ

転載: blog.csdn.net/qq_45891413/article/details/104933337
おすすめ