Vijos1130. 數(shù)的計數(shù)
來源:程序員人生 發(fā)布時間:2014-10-02 08:00:00 閱讀次數(shù):3210次
試題請參見: https://vijos.org/p/1130
題目概述
我們要求找出具有下列性質(zhì)數(shù)的個數(shù)(包含輸入的自然數(shù)n):
先輸入一個自然數(shù)n(n≤1000),然后對此自然數(shù)按照如下方法進行處理
1. 不作任何處理;
2. 在它的左邊加上一個自然數(shù),但該自然數(shù)不能超過原數(shù)的一半;
3. 加上數(shù)后,繼續(xù)按此規(guī)則進行處理,直到不能再立生自然數(shù)為止.
輸入
一個自然數(shù)n.
輸出
一個整數(shù), 總的個數(shù).
解題思路
我不得不說, 這題意敘述得實在是...非常棒! 舉個栗子說: 若n = 6, 則會有如下再生數(shù):
6, 16, 26, 126, 36, 136
提取當(dāng)前這個數(shù)的最高位x, 這個數(shù)可能產(chǎn)生的再生數(shù)的個數(shù)為x / 2.
將最終結(jié)果加上x / 2即可.
遇到的問題
一道AC率為83%的題貌似不會遇到什么問題 0 0
源代碼
#include <iostream>
void getNumbers(int n, int& counter) {
counter += n / 2;
for ( int i = 1; i <= n / 2; ++ i ) {
getNumbers(i, counter);
}
}
int main() {
int n = 0, counter = 1;
std::cin >> n;
getNumbers(n, counter);
std::cout << counter << std::endl;
return 0;
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈