(紀中)1968. 買水(h2o)【數學(找規律)】

*(File IO): input:h2o.in output:h2o.out
時間限制: 1000 ms 空間限制: 128000 KB 具體限制


題目描述
小PP超喜歡喝水,所以他就去買水了。
商店裏有 55 種水
11 種:商店裏有無數瓶
22 種:商店裏只有一瓶
33 種:商店裏竟然有 44 瓶 。
44 種: 5555 瓶一包賣的
55 種: 2222 瓶一包賣的
好奇心極強的小PP想買nn 瓶水,他想知道他有多少種買法。


輸入
輸入文件 h2o.inh2o.in 的第一行包括一個正整數NN

輸出
輸出文件h2o.outh2o.out 有且僅有一個整數 , 爲買水方案數。


樣例輸入
1

樣例輸出
3


數據範圍限制
對於 1010% 的數據: n<=10n<=10;
2020% 的數據: n<=100000n<=100000;
對於 100100% 的數據: n<=2147483647n<=2147483647;


解題思路
我們發現其實用循環也是可以找出規律的,只需枚舉每種水買多少瓶(包),在判斷是否能湊成N瓶水即可,然後我們就得到了以下規律:
在這裏插入圖片描述* 我們可以發現
3=1+23=1+2
6=1+2+36=1+2+3
10=1+2+3+410=1+2+3+4
15=1+2+3+4+515=1+2+3+4+5
21=1+2+3+4+5+621=1+2+3+4+5+6
所以用等差數列求和公式即可,即答案爲(n+1)(n+2)/2(n+1)(n+2)/2


代碼

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
   freopen("h2o.in","r",stdin);
   freopen("h2o.out","w",stdout);
   long long n;
   scanf("%lld",&n);
   printf("%lld",(n + 1) * (n + 2) / 2);
   return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章