题意给你一个a,b,问a除b小数点后n位中,子串组合的数能被p整除的有多少个
a,b位1e16,n为1e6,p为300
思路首先,要先处理出来后小数点后n位,这个就是模拟一下除法,很简单(当时没想到哈)这是一个有意思的“迪屁”这个梗是去年,北大吉如一比赛之后和队友说:这比赛太垃圾了,满场都是数据结构,连一个有意思的迪屁都没有。
接下来就该转移了,转移方程为dp[i][x] = g[i - 1][y] + int(a[i] % p == x)这个表示,到i这一位,子串能构成x的倍数有多少个,那个y满足,(y + a[i]) % p=x,y=(x - a[i] + p) % p;当你转移完了这一位的时候,当前i位对i+1位的影响就是x * 10,所以转移的时候不要忘了乘10,来作为下一位的转移的根据。
每一位都是由上一位转移过来,所以就可以滚动一下,滚第一维
PS:一个有点玄学的地方就是,如果你把n和p开成long long 就wrong了,我至今也不知道怎么回事,及其玄学。

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <queue>
#include <cstring>
#include <map>using namespace std;
typedef long long LL;const int N = 1e6;
LL A[N + 5] , dp[2][300] , g[2][300];
LL a , b ; int  p ,n ;int main()
{int T;scanf("%d",&T);while(T--){scanf("%lld %lld %d %d",&a , &b , &n , &p);for(int i = 1 ; i <= n ; i++){A[i] = (a * 10 / b);a = a * 10 % b;}memset(dp , 0 , sizeof(dp));memset(g , 0 , sizeof(g));LL  ans = 0;int t = 0;for(int i = 1 ; i <= n ; i++){t = 1 - t;memset(g[t] , 0 , sizeof(g[t]));for(int x = 0 ; x < p ; x++){int y = (x - A[i] + p) % p;dp[t][x] = g[1 - t][y] + (LL)((A[i]) % p == x);g[t][(x * 10) % p] += dp[t][x];}ans = ans + dp[t][0];}printf("%lld\n",ans);}return 0;
}

codeforces [Gym-100814K]相关推荐

  1. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

    Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...

  2. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)

    Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...

  3. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  4. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  5. Codeforces Gym 100269 Dwarf Tower (最短路)

    题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...

  6. Codeforces Gym 100676G Training Camp 状压dp

    http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...

  7. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  8. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  9. Codeforces Gym 100650B Countdown (离线)

    题目链接:http://codeforces.com/gym/100650 根据给出的树和d,求出一些结点,这些结点形成子树的第d层结点数应该尽量多,具体要求可以参考题目. dfs一个结点前保存询问深 ...

  10. Codeforces Gym 101630J Travelling from Petersburg to Moscow (最短路)

    题目链接 http://codeforces.com/gym/101630/attachments 题解 zyb学长的题. 先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x ...

最新文章

  1. c 语言 声明 定义,C/C++语言声明与定义详解
  2. Lync 手机客户端登录过程
  3. 吉林大学c语言考试题库,吉林大学C语言题库.docx
  4. 【TweenMax】实例TimelineMax
  5. win10安装vbox没有虚拟网卡_消失的虚拟网卡
  6. 190523每日一句
  7. arcgis下载地址
  8. Pyinstller打包的exe文件反编译
  9. Unbuntu卸载anaconda(最新最全亲测)
  10. 时间序列预测 | Python实现GAN时间序列数据生成建模
  11. spss-多元线性回归分析
  12. matlab各向异性高斯核方向导数滤波器,加权组合多尺度各向异性高斯核对象轮廓检测...
  13. 三友硅业的化工厂人员定位系统——新导智能
  14. 关于win10输入法问题(打不出中文)解决方法
  15. 斑马zt410标签纸大小不能调的原因
  16. 定时任务:创建静态定时任务、动态定时任务
  17. Uncaught TypeError: Cannot read property ‘dispatch‘ of undefined
  18. 古筝d调变降e调怎么办_古筝怎么从D调转成E调
  19. yocto project
  20. Python语法学习之函数

热门文章

  1. 【MFC】打开资源视图对话框,提示未注册控件
  2. PyQT5 (二十五) 绘图API: 绘制不同类型的直线 的案例drawLine()
  3. win11 眼睛保护色
  4. 几种常见的垃圾回收器
  5. 线性代数基本知识-思维导图
  6. SAP PS 第5节 标准WBS及标准网络
  7. 跟着团子学SAP:LTMC进阶教程-用LTMOM调整标准模版(增加WBS层级字段示例)
  8. Python如何一行代码自动发邮件
  9. 职业自我认知的测试软件,职业规划 自我认知与职业测试 讲稿
  10. Navicat fro oracle 简体中文破解版(亲测可用)