码迷,mamicode.com
首页 > 其他好文 > 详细

HDU5400 Arithmetic Sequence

时间:2015-09-18 15:19:50      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

解题思路:这题看懂题目是很关键的,这个区间是等差数列,且公差为d1或d2,

     特别注意单个数字也为等差数列。每次求出等差数列序列长度,然后

      求出对应这种长度对应有多少种组合方式,累加起来就是结果。

      注意要用long long,还有注意特判数据,如 5 -1 -1 ,5 4 3 2 1;

     5 1 1, 1 2 3 4 5 ; 5 1 1, 1 1 1 1 1等。

 1 #include<cstdio>
 2 int main()
 3 {
 4     int A[100005], n, d1, d2;
 5     long long  sum, cnt; //注意这里要用long long 否则会WA
 6     //int sum, cnt;
 7     while(~scanf("%d %d %d", &n, &d1, &d2))
 8     {
 9         sum = cnt = 0;
10         for(int i = 0; i < n; i++) scanf("%d", &A[i]);
11         for(int i = 1; i < n; i++)
12         {
13             if(A[i]-A[i-1] ==  d1)
14             {
15                 while(A[i]-A[i-1] == d1)
16                 {
17                     i ++;
18                     cnt ++;
19                     if(i == n) break;
20                 }
21                 if(i == n) break; //i为n时要及时跳出,其它地方同理。
22                 while(A[i]-A[i-1] == d2)
23                 {
24                     i ++;
25                     cnt ++;
26                     if(i == n) break;
27                 }
28                 sum += (cnt+1)*cnt/2; //满足条件的序列长度为cnt+1时,共有(cnt+1)*cnt/2种组合方式
29                 cnt = 0; //cnt重新初始化
30                 i --; //一定要回退一步,画画就知道了。
31                 continue;
32             }
33             if(i == n) break;
34             if(A[i]-A[i-1] == d2)
35             {
36                 while(A[i]-A[i-1] == d2)
37                 {
38                     i ++;
39                     cnt ++;
40                     if(i == n) break;
41                 }
42                 sum += (cnt+1)*cnt/2;
43                 cnt = 0;
44                 i --;
45             }
46         }
47         sum += (cnt+1)*cnt/2; //这步不能少
48         printf("%I64d\n", sum+n); //一定要加上这个n,刚开始我加的是5,WA了一发
49        // printf("%d\n", sum+n);
50     }
51     return 0;
52 }

 

HDU5400 Arithmetic Sequence

标签:

原文地址:http://www.cnblogs.com/loveprincess/p/4818984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!