天梯題目解答 通過初賽1 2

2021-06-18 01:52:15 字數 3789 閱讀 6488

1075.題目描述 description

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數(n≤100),對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成「去重」與「排序」的工作。

輸入描述 input description

有2行,第1行為1個正整數,表示所生成的隨機數的n個數

第2行有n個用空格隔開的正整數,為所產生的隨機數

輸出描述 output description

第1行為1個正整數m,表示不相同的隨機數的個數。第2行為m個用空格隔開的正整數,為從小

到大排好序的不相同的隨機數。

樣例輸入 sample input10

2040 32 67 40 20 89 300 400 15

樣例輸出 sample output8

15 20 32 40 67 89 300 400

用了stl,這裡主要是利用vector可以自己排序然後去重,包括sort,unique,以及vector自己的erase

#include

#include

#include

using

namespace std;

intmain

() vector<

int>::iterator iter;

sort

(ids.

begin

(),ids.

end());

iter =

unique

(ids.

begin

(),ids.

end());

if(iter!=ids.

end())

ids.

erase

(iter,ids.

end());

cout

()

begin

();iter!=ids.

end();iter++)

cout<<(*iter)<<

" ";

}

另一種方式,因為資料很少,直接用統計就好,簡單的hash

#include

#include

using

namespace std;

intmain

()}

cout

int i =

0; i <

1000

;++i)

return0;

}

1076. 題目描述 description

給出n和n個整數,希望你從小到大給他們排序

輸入描述 input description

第一行乙個正整數n

第二行n個用空格隔開的整數

輸出描述 output description

輸出僅一行,從小到大輸出n個用空格隔開的整數

樣例

3 1 2

輸出:1 2 3

發現還是很懶的用了stl=_=

#include

#include

#include

using

namespace std;

intmain

()sort

(d.begin

(),d.

end());

vector<

int>::iterator iter;

for(iter=d.

begin

();iter!=d.

end();iter++)

cout<<(*iter)<<

" ";

}

1083.題目描述 description

現代數學的著名證明之一是georg cantor證明了有理數是可列舉的。他是用下面這一張表來證明這一命題的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我們以z字形給上表的每一項編號。第一項是1/1,然後是1/2,2/1,3/1,2/2,…

輸入描述 input description

整數n(1≤n≤10000000)

輸出描述 output description

表中的第n項

樣例輸入 sample input

樣例輸出 sample output

1/4這道題其實我覺得就是數學,算算算算然後算出來,因為可以把左上的數字看成是個金字塔,每層的整數個數是一定的,和上一層的差異也是一定的,然後分子分母就是行和列的標號,其實不需要算什麼分數,只要找到這個金字塔和行列號之間的關係就好

開始的m是計算的一元二次方程的根,金字塔一層是1個整數,2層有1+2個,3層有1+2+3個,那麼就有((m-1)m/2+1)<=n,這裡的m是第n個數屬於金字塔的層數

有了m那麼金字塔第m層的其實數值就是m_start,下面有計算,然後區分一下奇數層和偶數層,偶數層從m_start向下乙個數變化方向是(分母+1,分子-1),奇數層相反

#include

#include

using

namespace std;

intmain

()

1160.題目描述 description

小明玩乙個數字遊戲,取個n行n列數字矩陣(其中n為不超過100的奇數),數字的填補方法為:在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.

輸入描述 input description

n(即n行n列)

輸出描述 output description

n+1行,n行為組成的矩陣,最後一行為對角線數字之和

樣例輸入 sample input

樣例輸出 sample output

5 4 3

6 1 2

7 8 9

這個題也是數學好久,其實我想模擬的意思應該是弄乙個陣列然後轉著圈往裡填,但是想到時間效率,還是選擇了數學計算

#include

#include

using

namespace std;

intmain

() cout<} cout<}

貼一下認為合理的模擬的方法:就是轉著圈往裡填,每次填乙個邊

while(totwhile(y-1>=0 && !a[x][y-1]) a[x][--y]=++tot;

while(x+1while(y+1while(x-1>=0 && !a[x-1][y]) a[--x][y]=++tot;}

LeetCode題目1 C解答

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...

參加2020Jam初賽記錄與部分題目解答

我大約花了5 6小時,只做對兩題,拿到27分,不能進入下一輪比賽了。雖然結果並不好,不過那天過的十分充實,讓我感到很愉快,以後一定多多參加類似的演算法大賽,愉快自己。下面介紹一下這三道題和我的解題思路,原題目和我的 會放到github上,github位址。第一題 矩陣計算 7分 題目意思是,給定n個...

PAT 天梯賽 L1 部分題目整理

目錄 l1 002 列印沙漏 20 分 模擬 注意輸出格式問題 l1 020 帥到沒朋友 20 分 並查集 l1 025 正整數a b 15 分 細節注意 l1 027 出租 20 分 字串模擬 l1 030 一幫一 15 分 l1 043 閱覽室 20 分 細節處理 思維 l1 046 整除光棍 ...