B 小雨的三角形

题目链接:https://ac.nowcoder.com/acm/contest/949/B

思路:

  • 一个找规律题,找到规律就很简单,只剩下代码实现了。规律:第i行去头尾剩下的数的和等于第i-1行去头和尾后剩下的数的2倍的和再加上头尾的和。纯文字说起来有点绕,详情还是看代码。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <sstream>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <string>
 8 #include <stack>
 9 #include <queue>
10 #include <vector>
11 #include <map>
12 using namespace std;
13  
14 const int mod = 1e9+7;
15  
16 long long int sum[1005];
17  
18 void dabiao()
19 {
20     sum[1] = 0;
21     sum[2] = 0;
22     sum[3] = 4;
23     for(int i = 4; i <= 1000; i++)
24     {
25         sum[i] = 2 * (sum[i-1] + (i-1)) % mod;
26     }
27 }
28  
29 int main()
30 {
31     dabiao();
32     int n, m, x, y;
33     while(~scanf("%d%d", &n, &m))
34     {       
35         while(m--)
36         {
37             long long int ans = 0;
38             scanf("%d%d", &x, &y);
39             for(int i = x; i <= y; i++)
40             {
41                 if(i == 1)
42                 {
43                     ans += sum[i] + i;
44                     ans = ans % mod;
45                 }
46                 else
47                 {
48                     ans += sum[i] + 2 * i;
49                     ans = ans % mod;
50                 }       
51             }
52             printf("%lld\n", ans);
53         }
54     }
55     return 0;
56 }

总结:

    刚开始只是每组和求模再求总和后求模,没想到竟然不仅要每组和求模,还要每次求和后都求模,想不到想不到,谁让题做的少。错了那么多次可得长点记性了。

 

posted @ 2019-07-12 22:24  Anzer  阅读(213)  评论(0编辑  收藏  举报