先講poj2282:
題目很容易理解,但是做起來就有點苦難了
我是用遞迴,用例子3863這個例子來講這個遞迴:
用遞迴需要把 f (3863) =f (386 ) + x 這個遞迴的式子理解清楚
去掉個位 3 :知道 3 8 6 這三個數字出現了4次( 0 1 2 3個位的數字可以是這四種情況)
然後就是處理個位的的數字 ,個位的數字出現了 386次,包括 0
每一層遞迴,需要把之前的 *10 ;第一層是 1
然後依次類推
注意!!! 0 這個數字的理解:避免首位的0 的出現
0 和其他數字不同,0 不能從最高位出現,而其他的數字可以從最高位出現,所以處理的時候,在同一位,0 出現的次數比其他的次數要少一次
#include#include#includeusing namespace std;
int num_a[15],num_b[15];
int time;
void deal(int num,int ans)
for(int i=0;i<=9;i++)
ans[i]+=(num/10)*time;
time*=10;
deal(num/10-1,ans);
return ;
}int main()
return 0;
}
同理poj3286
#include#includeusing namespace std;
long long num_1,num_2;
long long ans;
void deal(long long num,long long time)
ans+=(num/10)*time;
time*=10;
deal(num/10-1,time);
return ;
}int main()
return 0;
}
POJ校門外的數
總時間限制 1000ms 記憶體限制 65536kb 描述某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它...
poj 3274 數的雜湊
據說這題很經典噢 開始的分析也經典。題目的分析我就不多說了,具體可以參考 一看就很清楚了 感謝這位博主 但他用的hash函式我暫時是不能理解,說以沒用它的方法。自己寫了個簡單的hash方法,似乎還挺湊效,然後再處理衝突。一開始時,我是先hash一邊,然後再來個for迴圈來判斷每個hash值.tle。...
poj 3298 數狀陣列
題目大意是一條大街上住著n個桌球愛好者,他們的水平高低用乙個數值表示,他們經常舉辦比賽,比賽要三個人,一人當裁判。對裁判是有一定要求的,裁判的水平必須介於兩選手之間且必須住他們中間,計算可以舉辦多少場比賽 include include define maxn 100005 int c 20050 ...