好吧,雖然是個水題,可以有個技巧。
有些題 可以直接用數學公式解決的、、、這裡鼓勵一下自己、、、、在幾次wa後,忍了忍 一直沒看解題報告
法一:打表,記錄1-65535的和(開始沒有注意到,計算到100000000,sum還是不夠2^31,後來算算前n項和才用計算到65535而已)。
由此也發現乙個問題,數字的儲存是乙個迴圈,先是正數,然後超出正數範圍後變成負數,再超出負數範圍變成正數。
#include using namespace std;
int sum[65536];
int main()
{ int k;
cin>>k;
int i;sum[0]=0;
for(i=1;i<65536;i++)
sum[i]=sum[i-1]+i;
while(k--)
{ int m;cin>>m;
for(i=1;i<65536;i++)
if(m<=sum[i]) break;
m-=sum[i-1];
m%=9;
if(m==0) cout<
轉變為解一元二次方程,因為前n項的和m=n*(n+1)/2.於是,n=sqrt(2m+0.25)
-0.5【ceil是向上取整函式】
**:#include #include using namespace std;
int main()
{ unsigned long n;
int k;
while(cin>>k)
{while(k--)
{cin>>n;
double i=ceil(sqrt(2*n*1.0+0.25)-0.5); //ceil()函式為向上取整
unsigned long j=(unsigned long)i-1;
n=n-j*(j+1)/2;
if(n%9)cout<
Bacon Number 兩種解法
view code 題目 cid 567 題目分析 與longth way 類似 這個好象就是傳說中的六度人脈,你只要通過六度人脈就可以找到世界上的任何乙個人。假設乙個人一生會認識n個人,那n n 1 n 2 n 3 n 4 n 5 n 6 世界總人數。給定一些邊確定乙個圖,即給定一些點之間的連通情...
The Longest Path 兩種解法
view code 題目 cid 567 題目分析 給定一些邊確定乙個圖,即給定一些點之間的連通情況,保證給定的圖沒有迴路,要求輸出該圖存在的最長路徑。思路分析 根據給定資訊構造圖,用鄰接表表示。鄰接矩陣明顯很麻煩且效率不高 將每乙個頂點看成是樹根,求出樹的高度。得到一系列樹的高度,最大的那個就是圖...
FBI樹兩種解法
問題描述 我們可以把由 0 和 1 組成的字串分為三類 全 0 串稱為b串,全 1 串稱為i串,既含 0 又含 1 的串則稱為f串。fbi樹是一種二叉樹,它的結點型別也包括f結點,b結點和i結點三種。由乙個長度為2n的 01 串s可以構造出一棵fbi樹t,遞迴的構造方法如下 1 t的根結點為r,其型...