時間限制: 1 s
空間限制: 32000 kb
題目等級 : 鑽石 diamond
等差數列的定義是乙個數列s,它滿足了(s[i]-s[i-1]) = d (i>1)。顯然的乙個單獨的數字或者兩個數字也可以形成乙個等差數列。
經過一定的學習小c發現這個問題太簡單了,等差數列的和不就是(sn+s1)*n/2?因為這個問題實在是太簡單了,小c不屑於去解決它。這讓小c的老師憤怒了,他就找了另外乙個問題來問他。
小c的老師給了他乙個長度為n的數字序列,每個位置有乙個整數,他需要小c幫他找到這個數字序列裡面有多少個等差數列。
……這個問題似乎太難了,小c需要你的程式幫他來解決這個問題。
輸入描述 input description
第一行乙個整數n,表示老師給出的數字序列的長度。
第二行有n個整數a[i],表示數字序列每個數字的大小。
輸出描述 output description
輸出只有一行乙個整數,表示這個序列中的等差數列的個數(mod 9901)。
樣例輸入 sample input
51 4 2 3 7
樣例輸出 sample output
資料範圍及提示 data size & hint
對於30%的資料,n <= 100
對於70%的資料,n <= 500
對於100%的資料,n <= 1000;-500 <= a[i] <= 500
/*f[i][j]表示以i為終點(且i不為起點),差為j的個數
窮舉起點和第二項,然後更新第二項的值。
最後就需要加上n,以為乙個元素也是等差數列。
*/#include
#include
#include
#define n 1007
#define mod 9901
using
namespace
std;
intn,m,d,a[n];
long
long ans,f[n][n<<2
];int
main()
ans=n;
for(int i=1;i<=n;i++)
for(int j=0;j<=2000;j++)
ans=(ans+f[i][j])%mod;
printf(
"%lld\n
",ans);
return0;
return0;
return0;
}
45 等差數列
45 等差數列 問題描述 乙個等差數列是乙個能表示成a,a b,a 2b,a nb n 0,1,2,3,在這個問題中a是乙個非負的整數,b是正整數。寫乙個程式來找出在雙平方數集合s中長度為n的等差數列。雙平方數集合是所有能表示成p2 q2的數的集合。輸入說明 第一行 n 3 n 25 要找的等差數列...
45 等差數列
乙個等差數列是乙個能表示成a,a b,a 2b,a nb n 0,1,2,3,在這個問題中a是乙個非負的整數,b是正整數。寫乙個程式來找出在雙平方數集合s中長度為n的等差數列。雙平方數集合是所有能表示成p2 q2的數的集合。第一行 n 3 n 25 要找的等差數列的長度。第二行 m 1 m 250 ...
45 等差數列
45 等差數列 問題描述 乙個等差數列是乙個能表示成a,a b,a 2b,a nb n 0,1,2,3,在這個問題中a是乙個非負的整數,b是正整數。寫乙個程式來找出在雙平方數集合s中長度為n的等差數列。雙平方數集合是所有能表示成p2 q2的數的集合。輸入說明 第一行 n 3 n 25 要找的等差數列...