题目:看图
思路:
找规律,我们发现这个序列为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 }
还有一种递归做法,可以参考。