89 分糖果
問題描述 :
肖恩和派屈克是兄弟,他們從他們的父母那裡得到了很多糖果。每一塊糖具有乙個正整數的價值,孩子們希望分他們得到的糖果。首先,肖恩將這些糖果分成兩堆,並選擇一堆給派屈克。然後,派屈克將嘗試計算每堆的價值,其中每堆的價值是那堆糖果價值的總和,如果他覺得沒有平等的價值,他將開始哭了起來。
不幸的是,派屈克太小了,所以不能正確的計算。他只會二進位制無進製的加法。比如說,他想算12(二進位制為1100)加5(二進位制為101),他會把最右邊的兩位加法算正確,但是第三位會忘記進製。(即0+0=0,0+1=1,1+0=1,1+1=0)
因此,派屈克算12加5的結果為9。下面幾個是派屈克算的結果:
5 + 4 = 1
7 + 9 = 14
50 + 10 = 56
肖恩數學很好,他想得到價值總和更高的糖果並且不讓他的弟弟哭。如果可能,他會分成兩個非空的糖果袋,讓派屈克認為,雙方都有相同的值的糖果。給你每一袋糖果每一塊糖果的價值,我們想知道是否可能讓派屈克相信他們得到糖果價值的總量是相同的。如果可能計算出肖恩能得到的最大的價值。
輸入說明 :
第一行輸入t(1每組測試資料佔一行,每行包含以下資料,n c1 c2 … cn(其中n(2 ≤ n ≤ 10)代表從父母那裡得到糖果的總數,c(1 ≤ ci ≤ 100)代表每塊糖果的價值)
輸出說明 :
若不能輸出no,若能則輸出肖恩得到的最大的價值。
輸入範例 :
25 1 2 4 5 8
3 3 5 6
輸出範例 :
no11
/*
t90 迴圈數
*/#include
#include
#define max_size 10
intisloopingnum
(int n)
;int
main()
else
i++;}
return0;
}// 判斷迴圈數
intisloopingnum
(int n)
;// flag[i]=1表示數字i在某個數的已經出現
int stack[max_size]=;
// 儲存乙個數的各個位
while
(n)
digitamt = i;
for(j =
0; j < i /
2; j++)
i =0;
count++
; num = stack[i]
;memset
(flag,0,
sizeof
(flag));
// 重置標記
flag[num]=1
;while
(count < digitamt)}if
((i + num)
% digitamt !=0)
// 沒有回到起點,不是迴圈數
return0;
return1;
}
害,感覺我判斷迴圈數那裡寫的好複雜…… 東華oj 高階題第33題 回文數
33 回文數 問題描述 有一天,明明在做數學作業的時候,發現了一組很有趣的數字。例如1 11 121 1331等等。他發現這些數字都是左右對稱的,即不管你把這些數字從左讀到右還是從右讀到左,讀出來的數字都是一樣的。於是明明就把這個發現告訴了他爸爸。明明的爸爸是一名數學專家,他當然對這種型別的數字早有...
東華oj 高階題第11題
11 abc數字 問題描述 明明的爸爸是一位著名的數學家同時也是一位著名的數學啟蒙老師。他經常出一些簡單而有趣的數學題目來給剛剛接觸數學的小朋友做,培養他們對數學的興趣。一天,明明的爸爸想到了這樣乙個題目。如果有a b c三個1位的正整數,那麼按以下的方法構成2個三位數 第一種方法是a為百位,b為十...
東華oj 高階題第21題
21 回文質數 問題描述 因為151既是乙個質數又是乙個回文數 從左到右和從右到左是看一樣的 所以 151 號是回文質數。寫乙個程式來找出範圍 a,b 5 a b 100,000 間的所有回文質數 輸入說明 僅 1 行 二個整數 a 和 b 5 a b 100,000 輸出說明 輸出乙個回文質數的列...