天天看點

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

标程代碼全部為C語言編寫。代碼中的#if LOCAL_ 至#endif為本地一些調試内容,可以忽略。

Xenny的A+B(1)【容易】【簽到】

簽到題,做不出的話可能你有點不太适合ACM了。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的A+B(2)【容易】【簽到】

也沒什麼好說的,用一個循環控制輸入的次數就行了

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的A+B(3)【困難】【模拟】

這是本次比賽最難的題目,用意在于賽後你們看見此題題解可以開拓一下思維方式,不要局限于中學的思維,要掌握計算機。

乍一看這題沒法做,怎麼去存A和B兩個這麼大的數字,但我們可以用數組存儲這兩個數字,然後模拟手算,一位一位的相加,滿10進位,使用數組模拟的方式便可以很快的解決掉這道題目。值得注意的是char數組存儲的是ASCII碼,注意之間轉換。

注:scanf中的第一個%s前的空格不是沒有意義的,它是為了吸收緩沖區的東西,防止造成錯誤。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】
ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】
ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的三角形(1)【容易】【簽到】

三角形任意兩邊之和大于第三邊,根據這個判斷即可。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的三角形(2)【簡單】【枚舉】

直角三角形滿足勾股定理,而且這道題資料範圍不大。

直接循環枚舉1至C的每個數i,再判斷sqrt(C^2 - i^2)是不是一個整數即可。

注意輸出條件!輸出的時候得判斷一下哪個數小一點,先輸出較小數字。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】
ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的三角形(3)【一般】【思維】

題意即為給你RT三角形的一條直角邊A,找B和C。

直接運用勾股數的定義求即可。此題若不知道勾股數的相關規律較難,但也不難找出規律。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

了解規律後,這題變得很簡單了。直接套用即可,同時判斷一下B,C是否合法。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】
ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的數學題(1)【簡單】【思維】

L大于等于4;

當L為偶數時,一定可以拼出矩形,最大面積即為最接近正方形的時候。

當L為奇數時,肯定不能拼一個沒有多餘部分的矩形。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的數學題(2)【簡單】【簡單數學】

直接計算僵屍走到植物面前需要幾秒,每秒承受一顆豆子,判斷能否射死僵屍即可。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的數學題(3)【一般】【簡單幾何】

這題應該算簡單題,但涉及到精度計算,還是歸為一般算了。

高中數學知識,兩種方式,建坐标系或者幾何法。下面給出幾何法的過程。

不要看過程運算量大,計算機的存在就是幫你運算。是以也希望各位能從這道題中領悟些東西。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

代碼1:

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

代碼2:

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

代碼3:

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】
ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的數字【簡單】【思維】

就是讓你找到三個數a+b+c = x,而且都不是3的倍數。

令a = 1;

如果x-2不是三的倍數,則1,1,x-2滿足題意;

如果x-2是三的倍數,那麼x-3肯定不是三的倍數,此時1,2,x-3滿足題意。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

Xenny的防AK題【一般】【位運算+思維+猜】

為什麼說這道題一般呢,如果我把資料範圍開大一點這道題肯定就是非常困難的題目了。但我的每個數字Ai-th都是小于1e7的,是以你可以開一個1e7的數組存儲每個數字出現的次數,最後再周遊一遍尋找出現次數為奇數次的數字即可,不管是空間還是時間限制都是允許的。如果你沒有做出這道題,可以嘗試用這種方法解決這道題。

正解是需要用到異或位運算操作,何為異或,自行搜尋。

異或有這麼一個性質:A^B^B = A;

根據這個性質,我們在輸入的時候把每個值都異或。最後的得到的Num即為我們要求的兩個數字A,B的異或值,現在要做的就是如何分解得到兩個數。

Num中一定有不為0的二進制位置(易了解),假設第k位不為0,則A或B的第k位不為0,數組中的其餘的數若有第k位不為0的數對,則A或B與這些數對異或,可以得到A或B,最後再讓此數與Num異或,則得到另外一值。

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

還是再給你們寫一下用第一種方法解決的代碼

ACM團隊招新賽題解Xenny的A+B(1)【容易】【簽到】Xenny的A+B(2)【容易】【簽到】Xenny的A+B(3)【困難】【模拟】Xenny的三角形(1)【容易】【簽到】Xenny的三角形(2)【簡單】【枚舉】Xenny的三角形(3)【一般】【思維】Xenny的數學題(1)【簡單】【思維】Xenny的數學題(2)【簡單】【簡單數學】Xenny的數學題(3)【一般】【簡單幾何】Xenny的數字【簡單】【思維】 Xenny的防AK題【一般】【位運算+思維+猜】

還有一點,我說了這道題目我隻給了一組資料,而且範圍在[600,800]之間,你有猜到我的答案嗎?沒錯,就是760,是以你直接輸出760也可以AC掉這題。

  1. S.可能你們知道while(scanf(...) != EOF)是多組輸入,但我的題解中多用while(~scanf(...)),~其實就是取非符号,每個語句都是有傳回值的,!= EOF這種方式就是說scanf的傳回值不能是EOF,而~EOF恰好等于0,二者是等價的,是以可以這樣進行多組輸入。具體關于EOF以及~操作的解釋各位可以自行搜尋。

繼續閱讀