P1028 数的计算
题目描述
我们要求找出具有下列性质数的个数(包含输入的自然数nn):
先输入一个自然数nn(n \le 1000n≤1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.
输入格式
11个自然数nn(n \le 1000n≤1000)*
输出格式
11个整数,表示具有该性质数的个数。
输入输出样例
输入 #1 复制
6
输出 #1 复制
6
说明/提示
满足条件的数为
6,16,26,126,36,136
题意
在输入的数字里随便取一个数(保证这个数不超过那个数的一半),在输出有多少种解就可以了。(加零也是一种)暴力打表
代码如下
#include<bits/stdc++.h>
using namespace std;
int n;
int a[8901232];
int abc(int n){
if(a[n] != 0){
return a[n];
}
int ret = 1;
if(n < 2){
return ret;
}
for(int i = 1;i <= n / 2;i++){
ret += abc(i);
}
a[n] = ret;
return ret;
}
int main (){
cin >> n;
cout << abc(n);
return 0;
}