【CCF-CSP】202112-1-序列查询100分

一、代码如下

//202112-1-序列查询

#include <iostream>

using namespace std;
#define NumFlag 201 //n最大为200 

int a[NumFlag];//数组A 
int n;//数组个数 
int N;//N值 

void input(){//输入n、N、数组数据 
	cin>>n;cin>>N;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
} 

void output(){//输出数组内容 
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
}

int sum(){
	int x=0;//存储sum(A)值 
	for(int i=2;i<=n;i++){//小于a[1]的f()值皆为0,所以从i=2开始,(a[2]-a[1])*1 
		x=x+(a[i]-a[i-1])*(i-1);
	}
	//上述循环没有计算N大于a[n]的部分,下述操作将其补上
	x=x+(N-a[n])*n;
	return x; 
} 

int main(){
	input();
	//output(); //检验输入是否正确 
	int a=sum();
	cout<<a<<endl;
	return 0;
} 

二、思路分析

 模块一、题目的要求与提示

1、样例计算过程

        此题目较长,读完脑壳都懵了,看完题后再认真看懂“ 样例计算过程 ”对理解题意与找寻解题思路有着积极的作用。

 2、题目所给的提示

        题目所给的这个提示对提升算法效率有着很重要的作用,没注意到这个也因紧张而使用暴力算的话……岂不是嗷呜呜。

 3、变量范围

        可能算法写对了,但是没注意限界条件也拿不到满分。(这里n一定小于N)


模块二、代码步骤分析

        此题关键步骤在于sum(A)的计算,由模块一的读题与分析已大致有了解题思路。

但还需要注意以下细节

1、小于a[1]的f()值皆为0(所以不必算对0的求和),所以从i=2开始

        对于i=2时,x=x+(a[2]-a[1])*1                 ------个例

        对于i时,x=x+(a[i]-a[i-1])*(i-1)                ------共性

for(int i=2;i<=n;i++){ 
		x=x+(a[i]-a[i-1])*(i-1);
	}

	

2、述循环没有计算N大于a[n]的部分,下述操作将其补上

x=x+(N-a[n])*n;

此操作结束后x值即为所求。


模块三、结果提交

三、题目全图 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪&

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值