hihoCoder 1259 A Math Problem(数位dp)
来源:互联网 发布:bp人工神经网络算法 编辑:程序博客网 时间:2024/06/05 03:49
题目链接:hihoCoder 1259 A Math Problem
解题思路
公式推导完为f(2n) = 3 * f(n), f(2n+1) = 3 * f(n) + 1,即为i的2进制作为3进制计算贡献。
代码
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 65540;const int maxm = 65;int K;ll N, dp[maxm][maxn];ll solve () { int s = 0, bit[maxm]; for (int i = 60; i >= 0; i--) { bit[i] = N % 2; N /= 2; } memset(dp, 0, sizeof(dp)); for (int i = 0; i <= 60; i++) { for (int j = 0; j < bit[i]; j++) dp[i][(s*3+j)%K]++; s = (s * 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]; } } dp[60][s]++; dp[60][0]--; ll ans = 0; for (int i = 0; i < K; i++) ans ^= dp[60][i]; return ans;}int main () { int cas; scanf("%d", &cas); while (cas--) { scanf("%lld%d", &N, &K); printf("%lld\n", solve()); } 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)
- hdu 5435 A serious math problem(数位dp)
- uvalive7271(A Math Problem) 数位dp
- UVALive - 7271 A Math Problem (hihocoder 1259)
- hdu 5435 A serious math problem 数位dp
- UVALive 7271 A Math Problem 【数位dp计数】
- 2015ICPC北京区域赛K. A Math Problem(数位DP)
- hihocoder 1259 (数位DP)
- HihoCoder 1259 数位DP
- 2015北京现场赛 Hihocoder 1259 :A Math Problem
- HDU 5803 Zhu's Math Problem(数位DP)
- HDU5803 Zhu’s Math Problem (数位DP)
- hihoCode 1249 A Math Problem ACM/ICPC 2015 Beijing (数位dp+规律)
- hihocoder 1259 推公式+数位dp(非dfs写法)
- 数据库的事务隔离级别的通俗理解
- android的广播
- Xshell连接不上Ubuntu解决方式
- Java中使用MD5进行计算摘要
- 简单的 Bootstrap Jquery表单验证.js
- hihoCoder 1259 A Math Problem(数位dp)
- iOS开发-UITableView侧滑多选功能
- linux系统时间和硬件时间设置
- iOS 之 微信支付
- 用MVP架构开发Android应用
- 制图表达——总体介绍
- maven 使用命令package或者compile报错 错误: 需要class, interface或enum
- 关于DOM级别的一些问题,DOM0,DOM1,DOM2
- c++中的sort 函数