hihoCoder 1259 A Math Problem 数位dp
来源:互联网 发布:蚁群算法原理怎么改进 编辑:程序博客网 时间:2024/06/11 20:17
f(2n) = 3 * f(n)
f(2n+1) = 3 * f(n) + 1
i的二进制为f[i]三进制各位权值
数位统计
#include <bits/stdc++.h>#define ll long longusing namespace std;ll dp[63][65550];ll n;int k;int x;int main(){ //freopen("in.txt","r",stdin); int t; cin>>t; while(t--) { scanf("%lld %d",&n,&k); int bit[62]; for (int i=60;i>=0;i--) { bit[i]=n%2; n/=2; } int I; memset(dp,0,sizeof(dp)); for (int i=0;i<=60;i++) { if(bit[i]==1) { dp[i][1]=1; I=i; break; } } x=0; for (int i=I;i<=59;i++) { dp[i+1][1]=1; x=(x*3+bit[i])%k; for (int j=0;j<k;j++) { dp[i+1][j*3%k]+=dp[i][j]; dp[i+1][(j*3+1)%k]+=dp[i][j]; } if (!bit[i+1]) dp[i+1][(x*3+1)%k]--; } ll re=0; for (int i=0;i<k;i++) re^=dp[60][i]; cout<<re<<endl; } return 0;}
0 0
- hihoCoder 1259 A Math Problem 数位dp
- hihoCoder 1259 A Math Problem 数位dp
- hihoCoder 1259 A Math Problem(数位dp)
- Hihocoder 1259 A Math Problem(数位DP+公式推导)
- Hihocoder 1259 :A Math Problem(2015 北京区域赛 K,二进制的数位dp)
- uvalive7271(A Math Problem) 数位dp
- UVALive - 7271 A Math Problem (hihocoder 1259)
- hdu 5435 A serious math problem(数位dp)
- hdu 5435 A serious math problem 数位dp
- UVALive 7271 A Math Problem 【数位dp计数】
- hihocoder 1259 (数位DP)
- HihoCoder 1259 数位DP
- 2015北京现场赛 Hihocoder 1259 :A Math Problem
- HDU5803 Zhu’s Math Problem (数位DP)
- 2015ICPC北京区域赛K. A Math Problem(数位DP)
- hihoCode 1249 A Math Problem ACM/ICPC 2015 Beijing (数位dp+规律)
- HDU 5803 Zhu's Math Problem(数位DP)
- hihocoder 1259 推公式+数位dp(非dfs写法)
- for,for-in和enumerateObjectsUsingBlock的比较
- 关于Android Studio 的NDK环境
- 嵌入式网络编程资料汇总
- 多个Fragment实现跳转数据不变
- 基于rails的schedule网站开发(13):用send 方法改写authenticated?(...)
- hihoCoder 1259 A Math Problem 数位dp
- Android 价格日历
- APP中时间处理
- WIN7 调整分区
- Android之ListView分页获取网路数据(服务器端)(一)
- 2015-12-14 Shell Tools
- php版本切换问题:Redefining already defined constructor for class
- 网页图表Highcharts实践教程之图表区
- 仿微信视频等待进度条