正文

半数集问题2007-06-06 20:24:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/26452.html

分享到:

问题描述 问题描述: 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。 编程任务: 对于给定的自然数n,编程计算半数集set(n)中的元素个数。 输入 输入数据m行,每行给出一个整数n。(0〈n〈1000) 输出 输出只有m行,每行给出半数集set(n)中的元素个数。 输入样例 699 输出样例 69042 // mycode ,这里是“多重集”,非多重集有点麻烦 #include <stdio.h> int a[1000],aj; void get(int n){ int i,j,k; for(i=aj+1; i <= n; i++){  k = i/2;  for(a[i]=j=1; j <= k; j++)   a[i] = a[i] + a[j]; } aj = n;}int main(){ int n; aj = a[0] = a[1] = 1; while(scanf("%d",&n)!=EOF){  if(n > aj)   get(n);  printf("%d\n",a[n]); } return 0;}

阅读(4418) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册