3209: 花神的数论题

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 2169  Solved: 1006
[Submit][Status][Discuss]

Description

背景
众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。
描述
话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。
花神的题目是这样的
设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你
派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。

Input

一个正整数 N。

Output

一个数,答案模 10000007 的值。

Sample Input

3

Sample Output

2

好吧,原来是原题,就说怎么这么似曾相识

又敲了一遍

sum[x]表示二进制数中恰好有x个1的数的个数

暴力枚举R的最高位,如果当前位为1,那么后面所有位都可以01任意取,再枚举后面有多少个1组合数搞搞就好了

// http://qscoj.cn/problem/95/
#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
#define mod 10000007
LL C[88][88], a[88], sum[88];
LL Pow(LL a, LL b)
{LL ans;ans = 1;while(b){if(b%2==1)ans = (ans*a)%mod;a = (a*a)%mod;b /= 2;}return ans;
}
int main(void)
{LL i, j, n, ans, len, now;for(i=0;i<=66;i++)C[i][0] = 1;for(i=1;i<=66;i++){for(j=1;j<=i;j++)C[i][j] = C[i-1][j-1]+C[i-1][j];}scanf("%lld", &n);len = 0;while(n){a[++len] = n%2;n /= 2;}reverse(a+1, a+len+1);now = 0;for(i=1;i<=len;i++){if(a[i]){for(j=0;j<=len-i;j++)sum[now+j] += C[len-i][j];sum[now]--;sum[++now]++;}}ans = 1;for(i=1;i<=66;i++)ans = (ans*Pow(i, sum[i]))%mod;printf("%lld\n", ans);
}

bzoj 3209: 花神的数论题 喵哈哈村的秘境探险(四)相关推荐

  1. [数位dp] bzoj 3209 花神的数论题

    [数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...

  2. 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 3209: 花神的数论题 Time Limit: 10 Sec Memory ...

  3. bzoj 3209 花神的数论题 —— 数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3209 算是挺简单的数位DP吧,但还是花了好久才弄明白... 又参考了博客:https://b ...

  4. bzoj 3209: 花神的数论题

    限于本人DP处于背包--水平,不组声(就是对神奇的数位DP,找出j个1的有多少个,然后j的多少个次方就行) 1 #include<bits/stdc++.h> 2 #define N 10 ...

  5. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...

  6. bzoj3209 花神的数论题——数位dp

    题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积. 要对1000 ...

  7. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

  8. 【bzoj3209】 花神的数论题

    http://www.lydsy.com/JudgeOnline/problem.php?id=3209 (题目链接) 题意 ${sum(i)}$表示${i}$的二进制表示中${1}$的个数.求${\ ...

  9. 2018.10.27 bzoj3209: 花神的数论题(数位dp)

    传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前 ...

最新文章

  1. Oracle编程入门经典 第1章 了解Oracle
  2. CVPR 2010 MOSSE:《Visual Object Tracking using Adaptive Correlation Filters.》论文笔记
  3. OSPF协议概述(一)
  4. Java JUC工具类--CountDownLatch
  5. Python 线程优先队列 PriorityQueue - Python零基础入门教程
  6. java trrows处理_检查表并根据同一表中两个匹配列的值使tr内容加粗
  7. hashmap value占用空间大小_性能优化:为什么要使用SparseArray和ArrayMap替代HashMap?...
  8. Windows11动态磁贴替代软件大盘点 _φ(❐_❐✧ windows教程
  9. 【WPF】调用线程必须为STA,因为许多UI组件都需要
  10. 最新声音鉴定鉴卡引流神器PHP源码
  11. 阿里云无影云桌面怎么使用?用户名密码连接登录新手教程
  12. Aho-Corasick Automaton · AC自动机
  13. Windows注册表开机自启,右键菜单,运行的位置介绍
  14. python微信刷票代码_微信刷票漏洞详解,Python脚本实现一秒破万!
  15. 用户体验 | 银行如何优化APP用户体验
  16. FairGuard游戏加固兼容摸摸鱼和TAPTAP云玩
  17. jdk9 jdk10 jdk11启动rocketMQ的问题
  18. Ubuntu安装“启动引导器”的设备选哪一项,选默认还是选/boot分区?
  19. 真正了解@font face里font-weight的作用
  20. linux端口查看time_wait,netstat -an查看到大量的TIME_WAIT状态的解决办法

热门文章

  1. python和java学哪个好-Python和Java学哪个好就业?
  2. ffmpeg 从内存中读取数据(或将数据输出到内存)
  3. 锐捷linux上网教程,校园网Ubuntu锐捷(myxrgsu)安装联网方法
  4. 添加form表单_Django实战:如何使用djangocrispyforms美化Bootstrap 4表单
  5. html文件用的那个版本,html – 使用Django进行静态文件版本控制
  6. 用SpringMVC参数传递时,解决get请求时中文乱码的问题
  7. JS/JQuery操作iframe元素
  8. 冻结html表格标题列,jQuery实现冻结表头的方法
  9. 【codevs1073】家族
  10. UVa1586 - Molar mass