玩转绝对值

在这里插入图片描述
题目可以简化为:给你一个序列,求任意两个数的差的绝对值的和

我们考虑每两个数的差用了几次比如:1 2 5 8

5-2=3
1–5 1次
1–8 1次
2–5 1次
5–8 1次
一共4次
发现次数=位置*(n-位置)

1 2 5 8
2和5,8配对
1又和5,8配对
2*2=4

#include<bits/stdc++.h>
using namespace std;
inline long long read()//快读
{
	long long f=1,res=0;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
	while(isdigit(ch)){res=(res<<1)+(res<<3)+(ch&15);ch=getchar();}
	return res*f;
}
unsigned long long ans;
long long n,a[1000010];
int main()
{
	n=read();
	for(int i=1;i<=n;i++)a[i]=read();
	sort(a+1,a+1+n);
	for(int i=1;i<n;i++)
	ans+=(a[i+1]-a[i])*i*(n-i);//找每个差值用了几次
	cout<<ans;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA绝对值编码器转ABZ是指在FPGA芯片上实现将绝对值编码器信号转换成ABZ信号的功能。 绝对值编码器是一种能够精确测量旋转位置的传感器。它通常由一个包含固定位置的光源和光接收器的编码器盘以及一个可旋转的编码器盘组成。旋转编码器盘会遮挡或透过固定编码器盘上的光源,产生光脉冲信号,用以表示旋转位置。 ABZ信号是一种旋转位置信号,其中A、B和Z分别代表旋转编码器盘上的三个信号输出。A和B信号是两个正交相位的脉冲信号,用于测量旋转方向和位移量。而Z信号则是一个固定位置的脉冲信号,通常用于标记旋转的起始位置。 在FPGA芯片上实现将绝对值编码器信号转换成ABZ信号的过程通常包括读取绝对值编码器盘上的脉冲信号,根据旋转方向和位移量改变A和B信号的状态,并在固定位置检测到光脉冲时产生Z信号。 为了实现这一功能,我们可以利用FPGA芯片的可编程逻辑和计数器功能。具体步骤包括: 1. 通过模块或接口将绝对值编码器的脉冲信号连接到FPGA芯片。 2. 在FPGA芯片中创建一个计数器,并将A和B信号设置为计数器的输入引脚。 3. 根据脉冲信号的变化,监测计数器的状态并确定旋转方向和位移量。 4. 在固定位置检测到光脉冲时,产生Z信号。 5. 输出ABZ信号,用于后续旋转位置的测量和控制。 通过这种方式,我们可以在FPGA芯片上实现对绝对值编码器信号的解析和转换,将其转换成ABZ信号,以便后续的旋转位置测量和控制应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值