题目:看图

思路:

找规律,我们发现这个序列为10110101 10110101 10110101 ……

按照找到的规律,用循环数组就行了。

 

犯的错误:

sum没清0。

 

收获:

变量累加之前要清0。

 

代码:

 1 #include <iostream>
 2 using namespace std;
 3 const int ai[8]={1,1,0,1,1,0,1,0};//循环数组
 4 int main(){
 5     int q;
 6     cin >> q;
 7     for(int i=0;i<q;i++){
 8         long long a,b;//注意类型,int装不下
 9         int sum=0;
10         cin >> a >> b;
11         int jm;
12         for(int j=a;j<b;j++){
13             jm=j%8;//循环数组实现:当j=8时,jm=0,只要把数据按顺序放在下标1、2、3、4、5、6、7、0处就可以了
14             sum+=ai[jm];//这是优化,普通做法是if(ai[jm]==1)sum++,因为ai[jm]等于1是可以把sum加上ai[jm],反之也可以,所以直接sum+=ai[jm]就行了
15         }
16         cout << sum << "\n";
17     }
18     return 0;
19 }
View Code

 

还有一种递归做法,可以参考。

posted on 2020-02-07 11:00  eason66  阅读(120)  评论(0编辑  收藏  举报