• HDU5400 Arithmetic Sequence


    解题思路:这题看懂题目是很关键的,这个区间是等差数列,且公差为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
    ", sum+n); //一定要加上这个n,刚开始我加的是5,WA了一发
    49        // printf("%d
    ", sum+n);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    代码校验工具 SublimeLinter 的安装与使用
    java中写sql语句的小小细节
    搭建Hexo博客并部署到Github
    更改npm全局模块和cache默认安装位置
    笔记本连接老式显示器(VGA线+HDMI接口)
    用JSON-server模拟REST API
    使用 Feed43
    Coding.net+Myeclipse 2014 Git配置
    line-height 属性
    border-style 属性
  • 原文地址:https://www.cnblogs.com/loveprincess/p/4818984.html
Copyright © 2020-2023  润新知