题目描述
给定数组序列,如1,2,2,3,3,3,..., 再到后面 1 1 个 1 1, 2 2 个 2 2, 3 3 个 3 3, 4 4 个 4 4, 5 5 个 5 5, 6 6 个 6 6, 7 7 个 7 7, 8 8 个 8 8, 9 9 个 9 9……以此类推,依次拼接而成。
询问序列第 l 位到第 r 位的数字之和。
%% 任意重叠序列段求和
function main_overlap_seq()
%% 输入序列的求和位置, N是重叠序列末尾数字大小
start_num=5; end_num=20; N=8;
% 1.输出重叠序列
Seq=Overlap_Seq(N)
% 2.特定序列段求和
Result= sum(Seq(start_num:end_num))
% 1.1 重叠序列函数
function Seq=Overlap_Seq(N)
if N==1
Seq=1;
else
for i=2:N
Si=repeat(i);
for j=2:i
Seq( (((i-1)*i)/2) : (i*(i+1)/2) -1)=Si(j);
end
end
Seq=[1,Seq];
end
% 1.2 生成重复序列函数
function R=repeat(k)
for i=1:k
R(i)=k;
end