分析:
本题可以用一个一维数组a存储该数列的前1000项,a的第0个元素不用。每3个数为一组,每组开头的数(像“排头兵”一样)依次为1、2、3、4、…,也代表组的序号假设用变量k表示,组内每个数的序号用变量表示,k和j都从1开始计起,则第k组第j个数为k+j-1
用for循环产生前1000项。最后输入n,累加数组a中前n项的和并输出
#include<iostream>
using namespace std;
int a[1001]; //存储数列前1000项,a[0]不用
int main()
{ int k = 1, j = 1; //第k组第j个数
for(int i=1;i<=1000;i++){ //算出该数列的第i项
a[i] = k + j - 1;
if(i%3==0){ //进入下一组,k和j都要更新
k++; j = 1;
}
else j++; //组内下一个数
}
int n; cin >> n;
int s = 0;
for(int i=1;i<=n;i++){
s = s+a[i];
}
cout << s << endl;
return 0;
}