P1028数的计算
題目描述
#include <stdio.h> int count; void mid(int n) {if(n == 1) return;//注意遞歸結束條件 for(int i = n/2; i > 0; i--){mid(i);count++;} } int main() {int t;count = 0;scanf("%d", &t);mid(t);printf("%d\n", count+1);//+1是加上本身不做處理的那個數,即n return 0; }
我們要求找出具有下列性質數的個數(包含輸入的自然數n):
先輸入一個自然數n(n<=1000),然后對此自然數按照如下方法進行處理:
1.不作任何處理;
2.在它的左邊加上一個自然數,但該自然數不能超過原數的一半;
3.加上數后,繼續按此規則進行處理,直到不能再加自然數為止.
輸入輸出格式
輸入格式:一個自然數n(n<=1000)
輸出格式:一個整數,表示具有該性質數的個數。
輸入樣例#1:6 輸出樣例#1:6說明
滿足條件的數為
6,16,26,126,36,136
提供幾組測試數據: 0 ?1 ?2 ?3 ?4? 5? 100???????? 500?????????????? 1000
????????????????????? 答案:? ?1? 1? 2? 2? 4? 4?? 9828??????26338428????? 1981471878
n=1000需要的時間挺長的,居然沒有超時
Accepted代碼:
#include <stdio.h> int count; void mid(int n) {if(n == 1) return;//注意遞歸結束條件 for(int i = n/2; i > 0; i--){mid(i);count++;} } int main() {int t;count = 0;scanf("%d", &t);mid(t);printf("%d\n", count+1);//+1是加上本身不做處理的那個數,即n return 0; }
總結
- 上一篇: 图解 ElasticSearch 原理,
- 下一篇: 比excel更好用的免费拖拽报表—Jim