P1028 NOIP2001 普及組 數的計算

2021-10-17 03:22:27 字數 1357 閱讀 4251

題目描述:

我們要求找出具有下列性質數的個數(包含輸入的正整數 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] = 1

a[2] = 2

a[3] = 2

a[4] = 4

a[5] = 4……

a[1] = 1

a[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...