題目描述:我們要求找出具有下列性質數的個數(包含輸入的正整數 nn)。
先輸入乙個正整數 nn(n \le 1000n≤1000),然後對此正整數按照如下方法進行處理:
1.不作任何處理;
2.在它的左邊加上乙個正整數,但該正整數不能超過原數的一半;
3.加上數後,繼續按此規則進行處理,直到不能再加正整數為止。
輸入格式1 個正整數 nn(n \le 1000n≤1000)
輸出格式1 個整數,表示具有該性質數的個數。
輸入輸出樣例輸入6輸出6
說明/提示滿足條件的數為
6,16,26,126,36,136
【題目**】noip 2001 普及組第一題
根據題幹的意思,這道題可以通過遞迴做:使用乙個for迴圈,小於n/2, i++,count++
再使用遞迴
上**void sum(int n)
}
但是,這樣時間會超過1s,所以暴力遞規是不行的,接下來再分析一下
a[1] = 1a[2] = 2
a[3] = 2
a[4] = 4
a[5] = 4……
…
a[1] = 1a[2] = a[1] + 1
a[3] = a[1] + a[2] + 1
a[4] = a[1] + a[2] + 1
a[6] = a[1] + a[2] +a[3] + 1
所以,先建立乙個用於存放資料個數的陣列a,使用兩個for迴圈,根據這個遞推公式可得:for( i = 1;i <= n; i++)
}
源**#include
int main()//初始化存放陣列
int i,j,n;
scanf("%d",&n);
//printf("%d",n);
for( i = 1;i <= n; i++)
}printf("%d\n",a[n]);
// for(int i = 1;i <= n; i++)
return 0;
}
P1028 NOIP2001 普及組 數的計算
傳送門 我們要求找出具有下列性質數的個數 包含輸入的正整數 n 先輸入乙個正整數 n 0n 1000 然後對此正整數按照如下方法進行處理 不作任何處理 在它的左邊加上乙個正整數,但該正整數不能超過原數的一半 加上數後,繼續按此規則進行處理,直到不能再加正整數為止。1個正整數 n n 1000 1 個...
P1028 NOIP2001 普及組 數的計算
題目描述 我們要求找出具有下列性質數的個數 包含輸入的正整數 n 先輸入乙個正整數 n n 1000 然後對此正整數按照如下方法進行處理 1.不作任何處理 2.在它的左邊加上乙個正整數,但該正整數不能超過原數的一半 3.加上數後,繼續按此規則進行處理,直到不能再加正整數為止。輸入格式 1 個正整數 ...
P1028 NOIP2001 普及組 數的計算
題目描述 我們要求找出具有下列性質數的個數 包含輸入的正整數 n 先輸入乙個正整數 n n 1000 然後對此正整數按照如下方法進行處理 不作任何處理 在它的左邊加上乙個正整數,但該正整數不能超過原數的一半 加上數後,繼續按此規則進行處理,直到不能再加正整數為止。輸入格式 1 個正整數 n n 10...