zoukankan      html  css  js  c++  java
  • Arithmetic Sequence

    Problem Description
    A sequence b1,b2,,bn are called (d1,d2)-arithmetic sequence if and only if there exist i(1in) such that for every j(1j<i),bj+1=bj+d1and for every j(ij<n),bj+1=bj+d2.
    Teacher Mai has a sequence a1,a2,,an. He wants to know how many intervals [l,r](1lrn) there are that al,al+1,,ar are (d1,d2)-arithmetic sequence.
     

    Input
    There are multiple test cases.
    For each test case, the first line contains three numbers n,d1,d2(1n105,|d1|,|d2|1000), the next line contains n integers a1,a2,,an(|ai|109).
     

    Output
    For each test case, print the answer.
     

    Sample Input
    5 2 -2
    0 2 0 -2 0
    5 2
    3 2 3 3 3 3
     

    Sample Output
    12
    5
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const long long  maxn = 100005;
     6 long long  A[maxn];
     7 int main()
     8 {
     9     long long flag,n, d1, d2;
    10     long long sum, cnt;
    11     while(~scanf("%I64d %I64d %I64d", &n, &d1, &d2))
    12     {
    13         for(int i = 0; i < n; i++)
    14         {
    15             scanf("%I64d", &A[i]);
    16         }
    17 
    18         sum = 0, flag = 0, cnt = 0;
    19 
    20         for(int i = 1; i < n; i++)
    21         {
    22             if(A[i]-A[i-1] == d1 && flag == 0)
    23             {
    24                 cnt ++;
    25                 continue;
    26             }
    27             if(A[i]-A[i-1] == d2)
    28             {
    29                 flag = 1;
    30                 cnt ++;
    31                 continue;
    32             }
    33             //printf("cnt = %d
    ", cnt);
    34             sum += (1+cnt)*cnt/2;
    35             if(cnt != 0) i--;
    36             cnt = 0;
    37             flag = 0;
    38         }
    39         sum += (1+cnt)*cnt/2;
    40         //if (d1!=d2)
    41         printf("%I64d
    ", sum + n);
    42         //else printf("%I64d
    ",n);
    43     }
    44     return 0;
    45 }
    46 
    47 [ Copy to Clipboard ]    [ Save to File]
  • 相关阅读:
    TP5多条件搜索,同时有必要条件
    微信支付模式二 统一下单一直提示签名错误
    Js选择器总结
    video.js视频播放插件
    chosen 下拉框
    在MySQL中实现Rank高级排名函数
    解决html页面英文和数字不自动换行,但中文就可以自动换行
    php去除html标签
    day29 继承
    day28 作业
  • 原文地址:https://www.cnblogs.com/pblr/p/4739770.html
Copyright © 2011-2022 走看看