YSG---一道数论

题面

ysg,yxy,azw 三人正在刷题。 他们每做一题的时间都是一个有理数。如果在某一时刻,三人同时做完一道 题,那么,他们会开始谈笑风生。 现在,他们想知道,从时刻 0 开始,至少要等多久才能谈笑风生。 输入格式 一行 6 个整数 a1,b1,a2,b2,a3,b3,其中 ysg 每做一道题的时间是 a1/b1,yxy 是 a2/b2,azw 是 a3/b3。不保证 a,b 互质。 输出格式 一行 2 个数 c,d,表示第一次谈笑风生是在时刻 c/d。其中 c,d 互质。 输入样例 3 6 4 5 3 1 输出样例 12 1 样例解释 在时刻 12,ysg 做了 24 道题,yxy 做了 15 道题,azw 做了 4 道题,他们开始 谈笑风生。 备注 对于 30%的数据,b1=b2=b3=1。 对于 100%的数据,a1,a2,a3,b1,b2,b3<=100

 这道题我一开始的想法是:只考虑分子。因为分数的单位是 时间/题,而我要求的就是最小时间。所以我只需求出分子的最小公倍数,这样就可以保证答案除以分数时是整数。

但是我忽略了一个问题。刚才的想法没有错,分母没有公因数时这么做没有问题。但是当分母有公因数时,这样求出来的结果就会偏大。正确答案应该将分母的最大公因数除去。

所以做法是:求出分子的最小公倍数和分母最大公约数,约分后即是答案。

代码不附。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是 Savitzky-Golay 的 Matlab 代码: function [b,g] = sgolay(k,f) % Savitzky-Golay Smoothing and Differentiation Filter % % The Savitzky-Golay smoothing/differentiation filter (i.e., the polynomial % smoothing/differentiation filter, or the least-squares smoothing/differentiation filters) % optimally fit a set of data points to polynomials of different degrees. % See for details in Matlab Documents (help sgolay). % % The usage of function is similar to the Matlab built-in function "filter". % But filting coefficients are calculated by a different way. % % [b,g] = sgolay(k,f) % returns the k+1xn matrix of filter coefficients in b % returns the differentiation matrix in g % k: polynomial order % f: frame size % % Example: % % Smoothing a random sequence % t = (1:100)'; y = sin(t/10)+(t/50).^2; y = y + .05*(rand(size(t))-.5); % ysg = sgolayfilt(y,,11); % plot(t,y,'k',t,ysg,'r') % % % Savitzky-Golay differentiation of a random sequence % t = (1:100)'; y = sin(t/10)+(t/50).^2; y = y + .05*(rand(size(t))-.5); % [ysg,yd] = sgolayfilt(y,1,11); % plot(t,yd,'r',t,cos(t/10)+2*t/50,'k') % % See also: sgolayfilt, filter, savitzky_golay % Author: Yi Cao <y.cao@cranfield.ac.uk> % Date: 12th September 2007 % Check if the Input is valid narginchk(2,2); if round(f)~=f, error('Frame length must be an integer.'); end if rem(f,2)~=1, error('Frame length must be an odd integer.'); end if round(k)~=k, error('Polynomial order must be an integer.'); end if k>f-1, error('The Polynomial order must be less than the frame length.'); end % Calculation of the Savitzky-Golay Coefficients c=zeros(k+1,f); norm=ones(k+1,1)*[1:(f)]; for i=1:(f) norm(:,i)=norm(:,i)-((f-1)/2); end norm=norm.^([:k]'*ones(1,f)); for i=1:length(norm) for j=1:length(norm) c(i,j)=norm(i,:)*norm(j,:)'; end end c=inv(c); % the calculation of the filter coefficients b = zeros(f,k+1); for i=1:f for j=:k b(i,j+1)=norm(j+1,i); end end b = c*b; g = b(:,1); % Differentiation matrix b = b(:,end:-1:1); % smoothing matrix ### 回答2: Savitzky-Golay方法是一种常用的数字滤波方法,主要用于平滑和去噪信号。它可以通过拟合多项式来估计数据点的值,并利用邻近的数据点进行计算。这种方法被广泛应用于信号处理、图像处理和数据分析等领域。 在Matlab中,我们可以使用sgolayfilt函数来实现Savitzky-Golay滤波。这个函数的语法如下: y = sgolayfilt(x,order,framelen) 其中,x是输入信号,它可以是一维向量或二维矩阵;order是滤波器的多项式阶数,通常取2或4;framelen是滤波器的窗口长度,必须是一个奇数。 使用sgolayfilt函数实现滤波的步骤如下: 1. 首先,选择合适的order和framelen参数值。 2. 调用sgolayfilt函数,传入输入信号x和指定的参数值。 3. 函数将返回经过Savitzky-Golay滤波后的输出信号y。 滤波器的窗口长度决定了滤波器对信号的响应范围,较长的窗口可以更好地平滑信号,但也会导致滤波器的延时增加。因此,在选择参数值时需要权衡平滑效果和延时。 需要注意的是,sgolayfilt函数只能处理有限长度的输入信号,如果输入信号包含缺失值或NaN,函数会将其视为无效数据并进行处理。 总结而言,Savitzky-Golay滤波是一种有效的信号处理方法,在Matlab中可以使用sgolayfilt函数来实现。选取合适的参数值可以获得较好的平滑效果,但也需要注意滤波器的延时增加。 ### 回答3: Savitzky-Golay滤波是一种常用的平滑滤波方法,主要用于去除信号中的高频噪声。Matlab提供了内置的Savitzky-Golay滤波函数,可以方便地进行信号处理。 Matlab的Savitzky-Golay滤波函数sgolayfilt()的使用方法如下: y_filtered = sgolayfilt(y, order, framelen); 其中,y是待滤波的信号序列,order是滤波器的阶数,framelen是滤波器的长度。 Savitzky-Golay滤波函数通过拟合局部数据点的多项式曲线来平滑信号。阶数越高,滤波器对高频成分的抑制能力越强,但也会导致信号的平滑程度降低。长度越长,滤波器的平均效果越好,但也会导致滤波延迟增加。 使用Savitzky-Golay滤波函数的步骤如下: 1. 导入待滤波的信号数据y。 2. 设置滤波器的阶数order和长度framelen。 3. 调用sgolayfilt()函数对信号进行滤波,将滤波结果保存在y_filtered变量中。 例如,以下是一个使用Savitzky-Golay滤波函数对信号进行平滑的示例代码: ```matlab % 导入信号数据 load('signal_data.mat'); y = signal_data; % 设置滤波器的阶数和长度 order = 3; framelen = 11; % 使用Savitzky-Golay滤波函数对信号进行平滑 y_filtered = sgolayfilt(y, order, framelen); % 绘制原始信号和滤波结果 subplot(2,1,1); plot(y); title('原始信号'); subplot(2,1,2); plot(y_filtered); title('滤波结果'); ``` 这段示例代码将导入名为signal_data.mat的信号数据,并使用Savitzky-Golay滤波函数对信号进行平滑处理。最后,通过绘图将原始信号和滤波结果进行对比展示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值