【题意】将一个数用二进制数表示,求一共有多少种表示方法。

【分析】思路一:完全背包

【代码】

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include<ctime>
using namespace std;
const int INF=0x3fffffff,maxn=1e5+40;
const int mod=1000000;
const int total=2000050;
int f[total];
int main (void)
{
    int T,temp;
    f[0]=1;
    scanf("%d",&T);
    for(int i=0;i<=20;i++)//2^20<total<2^21
        for(int j=(1<<i);j<total;j++)
            f[j]+=f[j-(1<<i)]%mod;
   while(T--)
   {
       scanf("%d",&temp);
       printf("%d\n",f[temp]%mod);
   }
}

代码在zoj上AC,但是在soj上就一直TLE,改了好久才勉强AC........渣哭

思路二:看了别人的博客,可以用递推思想,从二进制数的角度,任何一个数都可以由他前一个数+1表示,但如果该数n是偶数,那么他还可以由他的一半n/2表示,即将n/2左移一位

【代码】

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include<ctime>
using namespace std;
const int INF=0x3fffffff,maxn=1e5+40;
const int mod=1000000;
const int total=2000050;
int f[total];
int main (void)
{
int T,num;
f[0]=1;
for(int i=0;i<total;i++)
{
if(i%2==0)
f[i]=(f[i/2]+f[i-1])%mod;
else
f[i]=f[i-1]%mod;
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&num);
printf("%d\n",f[num]);
}
}

最新文章

  1. Floyd-Warshall 全源最短路径算法
  2. Linux C fcntl()函数详解
  3. Web前端面试题目汇总
  4. Java设计模式-工厂方法模式(Factory Method)
  5. Redis安装及基本配置
  6. hexo资源--theme等
  7. QT的父子Widget之间消息的传递(如果子类没有accept或ignore该事件,则该事件会被传递给其父亲——Qlabel与QPushButton的处理就不一样)
  8. 我的VSTO之路(四):深入介绍Word开发
  9. 基于M9K块配置ROM的LCD12864图片显示实验
  10. 刨根问底HTTP和WebSocket协议
  11. VIM新手福利,配置向
  12. 信用评分卡 (part 4 of 7)
  13. 1021. Remove Outermost Parentheses删除最外层的括号
  14. pl/sql破解方法
  15. Spark MLlib 之 StringIndexer、IndexToString使用说明以及源码剖析
  16. day25
  17. discuz伪静态设置
  18. Eclipse搭建Android开发环境(安装ADT,Android4.4.2)
  19. hd acm 1297
  20. 搭建服务与负载均衡的客户端-Spring Cloud学习第二天(非原创)

热门文章

  1. ES5之变量
  2. WIN7 x64下java 8的环境变量配置
  3. Android图片压缩,不失真,上线项目
  4. 基于C++11的call wrapper
  5. 简述SVN服务器配置和客户端操作
  6. springMVC返回Base64位编码图片验证码
  7. oracle 表之间的连接
  8. log4net小记
  9. Spring Data Redis整体介绍 (一)
  10. svn in xcode5