hihoCoder 1259 A Math Problem 数位dp
来源:互联网 发布:淘宝宝贝上架图片尺寸 编辑:程序博客网 时间:2024/06/05 00:38
真的是区域赛没弱题这题貌似是区分北京站银牌与铜牌的一道题。
代码就先看一下别人的吧。
思路:我一直以为从低位向高位进行计算,然而发现很麻烦,例如11001100010000
你需要先算10000000000000,再算1000000000000,再算1000000000,会超时。
因此我们需要另一种方法。
例如110101
先算1,读取数据的时候从最高为开始读取,1,1,0,1,0,1这才是读取顺序,注意一下,转移一次之后,末尾要看他是多少。
#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)
- 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写法)
- 社会趣谈之无良媒体篇:北京一男子与充气娃娃结婚
- spring解决中文乱码问题
- Hive UDAF开发详解
- 浅谈STM32的DMA模块的使用
- 华为oj 进制转换
- hihoCoder 1259 A Math Problem 数位dp
- TabWidget/TabHost的两种使用方法
- 在eclipse搭建python开发环境
- BAT 批处理脚本教程
- PHP获取远程图片并保存到本地
- Linux配置JDK和tomcat
- iOS开发之数据传递(一)
- VS2010调用opencv2.4(64位)
- STM8硬件线路设计基础