若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1708: 半数集问题

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,290

题目描述

给定一个自然数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)中的元素个数。

输入

多组测试数据,每组一个整数n。(1≤n≤1000)

输出

输出n的半数集set(n)中的元素个数。

样例输入

6
1

样例输出

6
1

参考代码

#include <stdio.h>
#define LL long long
LL ans,a[1005],vis[1005];
LL dfs ( int n ) 
{
    if ( vis[n] )   //因为是向下搜,所以搜过了的就是答案了
    return vis[n];
    if ( n == 1 )   //n=1时返回1
    return 1;
    vis[n] = 1;
    //本身就是一种可能
    for ( int i = 1; i <= n/2; i ++ )
            vis[n] = vis[n]+dfs ( i );
    //累加所有可能
    return vis[n];
    //返回和值
}
int main ( ) 
{
    int n,j,i;
    while ( scanf ( "%d", &n ) != EOF ) 
    {
        printf ( "%lldn", dfs ( n ) );
        //printf ( "%lldn", a[n] );
    }
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Dreams孤独患者 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist