半数集
来源:互联网 发布:数据关联分析 编辑:程序博客网 时间:2024/05/02 00:55
给定一个自然数 n,由n开始可以依次产生半数集set(n)中的数如下:n<200
(1)n?set(n);
(2)在 n 的左边加上一个自然数,但该自然数不能超过最近添加数的一半;
(3)按此规则进行处理,直至不能添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。
注意:该半数集是多重集。
要求:对于给定的自然数n,计算半数集set(n)中的元素个数。
样例输入:
6
样例输出:
(1)n?set(n);
(2)在 n 的左边加上一个自然数,但该自然数不能超过最近添加数的一半;
(3)按此规则进行处理,直至不能添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。
注意:该半数集是多重集。
要求:对于给定的自然数n,计算半数集set(n)中的元素个数。
样例输入:
6
样例输出:
6
法一:#include<stdio.h>#define n 8int set(int m){int sum = 1;if(m == 1)return 1;else{for(int i = 1;i <= m / 2;i ++){sum = sum + set(i);}return sum;}}int main(){int count;count = set(n);printf("%d\n",count);return 0;}法二:#include<stdio.h>int a[100];int f(int n){a[0] = a[1] = 1;int i,j;for(i = 2;i <= n;i ++){a[i] = 0;for(j = 0;j <= i / 2;j ++)a[i] = a[i] + a[j];}return a[n];}int main(){int n = 6;printf("%d\n",f(n));return 0;} 法三:#include<stdio.h>int f(int n){if(n == 1)return 1;return f(n / 2 * 2 - 1) + f(n / 2);}int main(){int n = 6;printf("%d\n",f(n));return 0;}
0 0
- 半数集
- 半数集
- 半数集
- 半数集与半数单集问题
- 半数集和半数单集问题
- 半数集VS半数单集
- 半数集VS半数单集
- 半数集问题和半数集单集问题
- 半数集问题
- 半数集问题
- 半数集问题
- 半数集问题
- 半数集问题
- 半数集问题
- 半数集问题
- 半数单集问题
- 半数集个数
- 半数集问题
- 【NOI OJ】1816 拨钟问题
- 半数单集
- HDOJ 3788 ZOJ问题(观察推断题)
- 操作系统小练习5
- HDU 5353 模拟
- 半数集
- windows下搭建LAMP框架
- 抽象和封装
- 理解B+树算法和Innodb索引
- 安卓逆向系列教程 4.11 优酷 APK 去广告
- HDU 2553 N皇后问题
- 运维小白的Python之路(二)
- 最简单的android源码下载 编译 步骤
- matlab简易实现图像压缩