2020 牛客暑假訓練營補題 (第七場)

2021-10-08 21:48:58 字數 776 閱讀 2324

暑假還是不能摸魚了,盡量每天補一道題。

這裡大部分的補題應該都是參考了大佬的題解,所以如果有大佬看到了自己的解法,請多多包涵。

題目意思便是給出幾個數。對於每乙個數n進行乙個判斷,求1~n的平方和是不是乙個平方數。是則輸出一行fake news!,不是則輸出nobody knows it better than me!

這個題目我最初想的就是數字太大了,應該有個平方和的公式,能以此為基礎進一步進行判斷。高中數學老師提過一嘴1~n平方和公式、立方和公式。

所以還是有點印象。順便貼一下立方和的,說不定以後用得上。

平方和公式

12+22+32+……+n2=n(n+1)(2n+1)/6;

立方和公

13+23+33+……+n3=[n(n+1)/2]2

然後我的想法就是對這三個因數進行/6操作後進行判斷。如果處理後它們三個分別是平方數,那麼積也是平方數。但是想了想三個數的質因子不一定分布均勻,所以把這些多餘出來的質因子分出來積的數和分離後三個數才能正確進行判斷。但是如果直接分離質因數估計會爆,按照上面想法也不好用**表示出來。

所以猜了一下答案只有特例,但是沒想到最後答案是1和24。結束後看題解才發現的確是從平方和公式入手。然後有乙個解方程的過程。

推薦大佬的證明

#include

intmain()

return0;

}

2020 牛客暑假訓練營補題 (第八場)

暑假還是不能摸魚了,盡量每天補一道題。這裡大部分的補題應該都是參考了大佬的題解,所以如果有大佬看到了自己的解法,請多多包涵。這道題的意思是給你乙個n表示接下來給的資料組數。每組資料有a和b,每一輪需要處理一組資料。每一輪能進行以下三種操作的其中一種 什麼也不做 如果其中的a在之前沒有被選擇過,選擇a...

2020牛客暑期多校訓練營 第七場

可以看成把乙個m n m nm n的長方形劃成若干個寬為1 11的矩形,使得存在兩種分割方法能恰好填滿長和寬。然後只要不斷在矩形裡劃分正方形就行了。include using namespace std typedef long long ll intmain for int i 1 i n i a...

2020牛客暑期多校訓練營(第七場)

b題 傳送門 link 題意 有n m個口罩,需要要把它們裝到一些箱子裡面,要使箱子數盡可能少,並且滿足兩個條件,這些箱子可以分成m組,每組n個口罩,或者分成n組,每組m個口罩。思路 分配方案其實就是乙個迭代的過程。為了使得箱子數最少,每個箱子就應該盡可能的多裝。每次優先裝min n,m 個箱子,每...