• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

2019年第十届蓝桥杯C/C++ 省赛B组试题H:等差数列

 

 

 例子

5
2 6 4 10 20

结果:10 

5
0 0 0 0 0

 结果:5

 

 思路:(Max - Min) / Subtract (最小差值)+ 1(比如(20 - 2) / 2 + 1 = 10)

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int N;
	int i,j;
	int num[100000];
	int max=0,min=1000000000;
	int last=0, subtract=0,a;
	scanf("%d",&N);
	for(i=0;i<N;i++)
	{
		scanf("%d",&num[i]);
	}
	for(i=0;i<N;i++)
	{
		if(max<num[i])max=num[i];
		if(min>num[i])min=num[i];
	}
	subtract=abs(num[1]-num[0]);
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			a=abs(num[j]-num[i]);
			if(subtract>a&&a!=0)subtract=a;
		}
	}
	if(subtract!=0)
	last=(max-min)/subtract+1;
	if(subtract==0)last=N;
	printf("%d",last);
}

posted on 2022-04-12 20:03  王陈锋  阅读(46)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3