題目描述:
小雨手上有一個填滿了數字的三角形。這個三角形一共有 n 層,其中第 i層共有 ii個數,且第 1 個數和第 i 個數均爲 i 。其餘的數中,第 j 個數是上一層中第 j-1 個數和第 j 個數的和。小雨想知道這個三角形第 x 層到第 y 層所有數的和,一共有 mm個詢問。
輸入描述:
第一行兩個正整數 n,m,表示這個三角形的層數和詢問個數。
接下來 m 行,每行兩個正整數 x,y,表示一次詢問。
輸出描述:
輸出共 m 行,每行一個整數,表示一組詢問的答案,對 10^9 + 7取模。
輸入:
5 3
1 2
1 5
3 5
輸出:
5
83
78
題意:
題目描述
題解:
找規律
代碼:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
const int maxn = 10000 + 5;
const int mod = 1e9 + 7;
ll f[maxn];
int n,m;
void init(){
f[1] = 1;
for(int i = 2; i <= 1000; i ++){
f[i] = (f[i - 1] * 2 + 2) % mod;
}
}
int main(){
init();
while(scanf("%d%d",&n,&m)!=EOF){
int a,b;
while(m --){
scanf("%d%d",&a,&b);
ll ans = 0;
for(int i = a; i <= b; i ++){
ans += f[i];
ans %= mod;
}
printf("%lld\n",ans);
}
}
return 0;
}