【洛谷 P8682】[藍橋杯 2019 省 B] 等差數列 題解(數學+排序+輾轉相除法)

[藍橋杯 2019 省 B] 等差數列

題目描述

數學老師給小明出了一道等差數列求和的題目。但是粗心的小明忘記了一部分的數列,只記得其中 N N N 個整數。

現在給出這 N N N 個整數,小明想知道包含這 N N N 個整數的最短的等差數列有幾項?

輸入格式

輸入的第一行包含一個整數 N N N

第二行包含 N N N 個整數 A 1 , A 2 , ? , A N A_1,A_2,\cdots,A_N A1?,A2?,?,AN?。(注意 A 1 ~ A N A_1 ~ A_N A1?AN? 并不一定是按等差數列中的順序給出 )。

輸出格式

輸出一個整數表示答案。

樣例 #1

樣例輸入 #1

5
2 6 4 10 20

樣例輸出 #1

10

提示

包含 2,6,4,10,20 的最短的等差數列是 2,4,6,8,10,12,14,16,18,20

對于所有評測用例, 2 ≤ N ≤ 1 0 5 2 \le N \le 10^5 2N105 0 ≤ A i ≤ 1 0 9 0 \le A_i \le 10^9 0Ai?109

藍橋杯 2019 年省賽 B 組 H 題。


思路

首先,定義一些常量和變量,包括數組大小N,數組a,還有一個使用輾轉相除法計算兩數最大公約數的函數gcd。

接著,從輸入中讀取了一個整數n,然后讀取了n個整數并存儲在數組a中。定義了一個整數d,用來存儲數組a中第二個元素和第一個元素的差值。然后對數組a進行了排序。

接下來,遍歷數組a,從第三個元素開始,計算每個元素和前一個元素的差值,然后用gcd函數求出這個差值和d的最大公約數,并將結果賦值給d。

最后,如果d不為0,輸出((a[n] - a[1]) / d + 1),否則輸出n。

注意

需要進行特判,當公差為0時,所有數都相同,直接輸出n,否則會引發除零異常。


AC代碼

#include <algorithm>
#include <iostream>
#define mp make_pair
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;int n;
int a[N];
int diff[N];int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}int dmin = INF;sort(a + 1, a + n + 1);for (int i = 2; i <= n; i++) {diff[i] = a[i] - a[i - 1];dmin = min(dmin, diff[i]);}cout << (dmin ? ((a[n] - a[1]) / dmin + 1) : n) << "\n";return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

deep learning with pytorch(一)

1.create a basic nerual network model with pytorch 數據集 Iris UCI Machine Learning Repository fully connected 目標:創建從輸入層的代碼開始&#xff0c;向前移動到隱藏層&#xff0c;最后到輸出層 # %% import torch import torch.nn as nn import torch.nn.funct…

【大數據】詳細講解

大數據 0. 前言1. 大數據的5V特征2. 大數據技術3. 大數據分析4. 大數據應用5. 失效風險與挑戰 0. 前言 大數據是一個涉及非常龐大和復雜數據集的領域&#xff0c;這些數據集因其規模和復雜性而難以使用傳統數據處理軟件進行有效處理。在講解大數據之前&#xff0c;我們首先需要…

LeetCode26 刪除有序數組中的重復項

題目 給你一個 非嚴格遞增排列 的數組 nums &#xff0c;請你原地刪除重復出現的元素&#xff0c; 使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。 元素的 相對順序 應該保持 一致 然后返回 nums 中唯一元素的個數。 示例 示例 1&#xff1a;輸入&#xff1a;num…

30天JS挑戰(第十四天)------數據的復制

第十四天挑戰(數據的復制) 地址&#xff1a;https://javascript30.com/ 所有內容均上傳至gitee&#xff0c;答案不唯一&#xff0c;僅代表本人思路 中文詳解&#xff1a;https://github.com/soyaine/JavaScript30 該詳解是Soyaine及其團隊整理編撰的&#xff0c;是對源代碼…

后端開發技術面試指南

工作10多年&#xff0c;每年都會幫組里面試一些新同學校招社招的都有&#xff0c;下面我就從一個面試官的視角來給大家拆解一下如何淡然應對后端開發技術面試。 1.一面多為電話面試 (1)問七問八 ①簡歷要注重內容&#xff0c;形式上不丑沒有錯別字即可。之前收到過一個工作5…

經典語義分割(一)利用pytorch復現全卷積神經網絡FCN

經典語義分割(一)利用pytorch復現全卷積神經網絡FCN 這里選擇B站up主[霹靂吧啦Wz]根據pytorch官方torchvision模塊中實現的FCN源碼。 Github連接&#xff1a;FCN源碼 1 FCN模型搭建 1.1 FCN網絡圖 pytorch官方實現的FCN網絡圖&#xff0c;如下所示。 1.2 backbone FCN原…

為raspberrypi編譯bpftrace調試工具

基于eBPF的嵌入式應用調試 筆者之前寫過幾篇有關于使用eBPF調試Linux內核和應用的博客&#xff0c;其中提到&#xff0c;在嵌入式設備上使用BCC或bpftrace是不可行的&#xff1b;主要原因在于嵌入式設備的資源有限&#xff0c;而這兩個調試工具依賴python/clang/llvm等庫&…

Scratch 第十六課-彈珠臺游戲

第十六課-彈珠臺游戲 大家好&#xff0c;今天我們一起做一款彈珠臺scratch游戲&#xff0c;我們也可以叫它彈球游戲&#xff01;這款游戲在剛出來的時候非常火爆。小朋友們要認真學習下&#xff01; 這節課的學習目標 物體碰撞如何處理轉向問題。復習鍵盤對角色的控制方式。…

STL-內存的配置與釋放

STL-內存的配置與釋放 STL有兩級空間配置器&#xff0c;默認是使用第二級。第二級空間配置器會在某些情況下去調用第一級空間配置器。空間配置器都是在allocate函數內分配內存&#xff0c;在deallocate函數內釋放內存。 第一級空間配置器 第一級配置器只是對malloc函數和fre…

【自然語言處理】BitNet b1.58:1bit LLM時代

論文地址&#xff1a;https://arxiv.org/pdf/2402.17764.pdf 相關博客 【自然語言處理】BitNet b1.58&#xff1a;1bit LLM時代 【自然語言處理】【長文本處理】RMT&#xff1a;能處理長度超過一百萬token的Transformer 【自然語言處理】【大模型】MPT模型結構源碼解析(單機版)…

如何在 Mac 上成功輕松地恢復 Excel 文件

Microsoft Excel 的 Mac 版本始終略落后于 Windows 版本&#xff0c;這也許可以解釋為什么如此多的用戶渴望學習如何在 Mac 上恢復 Excel 文件。 但導致重要電子表格不可用的不僅僅是 Mac 版 Excel 的不完全穩定性。用戶有時會失去注意力并刪除錯誤的文件&#xff0c;存儲設備…

2024-03-03 c++

&#x1f338; MFC進度條控件 | Progress Control 1。新建MFC項目&#xff08;基于對話框、靜態庫&#xff09; 2。添加控件&#xff0c;刪除初始的3個多余控件 加1個progress control&#xff0c;修改其marquee為true&#xff0c;添加變量&#xff1a;變量名為test_progress。…

Angular基礎---HelloWorld---Day1

文章目錄 1. 創建Angular 項目2.對Angular架構的最基本了解3.創建并引用新的組件&#xff08;component&#xff09;4.對Angular架構新的認識&#xff08;多組件&#xff09;5.組件中業務邏輯文件的編輯&#xff08;ts文件&#xff09;6.標簽中屬性的綁定(1) ID的綁定(2) class…

String和String Builder

String和StringBuilder的區別 String類 String類代表字符串。java程序中所有字符串文字&#xff08;例如“abc”&#xff09;都被實現為此類的實例。 String類源碼是用final修飾的&#xff0c;它們的值在創建后不能被更改。字符串緩沖區支持可變字符串。 String對象是不可變…

STM32 (2)

1.stm32編程模型 將C語言程序燒錄到芯片中會存儲在單片機的flsah存儲器中&#xff0c;給芯片上電后&#xff0c;Flash中的程序會逐條進入到CPU中去執行&#xff0c;進而CPU去控制各種模塊&#xff08;即外設&#xff09;去實現各種功能。 2.寄存器和寄存器編程 CPU通過控制其…

Apache POI的簡單介紹與應用

介紹 Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。我們可以使用 POI 在 Java 程序中對Miscrosoft Office各種文件進行讀寫操作。PS&#xff1a; 一般情況下&#xff0c;POI 都是用于操作 Excel 文件&#xff0c;如圖&#xff1a; Apache POI 的應用場景&…

SQL無列名注入

SQL無列名注入 ? 前段時間&#xff0c;隊里某位大佬發了一個關于sql注入無列名的文章&#xff0c;感覺好像很有用&#xff0c;特地研究下。 關于 information_schema 數據庫&#xff1a; ? 對于這一個庫&#xff0c;我所知曉的內容并不多&#xff0c;并且之前總結SQL注入的…

設計模式-橋接模式實踐案例

橋接模式&#xff08;Bridge Pattern&#xff09;是一種結構型設計模式&#xff0c;用于將抽象與實現分離&#xff0c;使它們可以獨立地變化。這種模式通過提供一個橋接結構&#xff0c;可以將實現接口的實現部分和抽象層中可變化的部分分離開來。 以下是一個使用 Java 實現橋…

【數據結構】_包裝類與泛型

目錄 1. 包裝類 1.1 基本數據類型和對應的包裝類 1.2 &#xff08;自動&#xff09;裝箱和&#xff08;自動&#xff09;拆箱 1.2.1 裝箱與拆箱 1.2.2 自動&#xff08;顯式&#xff09;裝箱與自動&#xff08;顯式&#xff09;拆箱 1.3 valueOf()方法 2. 泛型類 2.1 泛…

【深度學習筆記】計算機視覺——目標檢測和邊界框

目標檢測和邊界框 前面的章節&#xff08;例如 sec_alexnet— sec_googlenet&#xff09;介紹了各種圖像分類模型。 在圖像分類任務中&#xff0c;我們假設圖像中只有一個主要物體對象&#xff0c;我們只關注如何識別其類別。 然而&#xff0c;很多時候圖像里有多個我們感興趣…