2020年Acm暑期考核Hznu _2797
题目链接:http://acm.hznu.edu.cn/OJ/problem.php?id=2797
题意:求1-N中有多少数字满足:
- x是正整数且无前导0。
- x(mod 666) = S(x)。
- 6在x这个数的各数位上出现的总次数必须为奇数。
题解:数位dp模板题(当时考核的时候忘记了板子当场去世)
Ac代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<vector>
4 #include<cstring>
5 #include<cstdio>
6 using namespace std;
7 #define mem(s,n) memset(s,n,sizeof s);
8 #define ios {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); }
9 typedef long long ll;
10 const int maxn=5e6+1;
11 const int Inf=0x7f7f7f7f;
12 const ll Mod=1e9+7;
13 int dp[55][2][500][667];
14 string s;
15 int dfs(int now,int last,int sum,int mod,bool lim)//now表示当前位数,last=0表示前面有偶数个6,last=1表示前面有奇数个6,sum表示
16 { // 前几位数之和,mod表示对666取余后的数字,lim判断是否达到上界。
17 if(now==-1)
18 {
19 if(mod==sum&&(last&1)) return 1;
20 //last & 1 这个表达式可以用来判断last的奇偶性。二进制的末位为0表示偶数,最末位为1表示奇数
21 return 0;
22 }
23 if(!lim&&~dp[now][last&1][sum][mod]) return dp[now][last&1][sum][mod];
24 int up=lim?s[now]-'0':9;
25 ll ans=0;
26 for(int i=0;i<=up;i++)
27 {
28 ans+=dfs(now-1,last+(i==6),sum+i,(mod*10+i)%666,lim&&i==up);
29 ans%=Mod;
30 }
31 if(!lim) dp[now][last&1][sum][mod]=ans;
32 return ans;
33 }
34 int main()
35 {
36 int t;
37 scanf("%d",&t);
38 mem(dp,-1);
39 while(t--)
40 {
41 cin>>s;
42 reverse(s.begin(),s.end());//倒置函数因为要从最高位开始。
43 printf("%d\n",dfs(s.length()-1,0,0,0,1));
44 }
45 return 0;
46 }
2020年Acm暑期考核Hznu _2797的更多相关文章
- ACM暑期训练总结
ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中 ...
- 中南大学2018年ACM暑期集训前期训练题集(入门题) X: 又一道简单题
简直智障,上一题V题,样例输出里面的“Case:”不要输出,到了这题又是要输出的了 #include<iostream> using namespace std; int num[1000 ...
- 中南大学2018年ACM暑期集训前期训练题集(入门题) Q: Simple Line Editor
数据有毒,一个一个读字符是错,整个字符串读入,一次就A了. 总之,数据总是没有错的,还是对c++了解地不够深刻,还有,在比赛中,一定要有勇气重构代码 错误代码: #include<iostrea ...
- 中南大学2018年ACM暑期集训前期训练题集(入门题) J : A Simple Problem
毒瘤哇!为什么要用long long 啊!!!这个题没有加法操作啊,为什么会爆int啊!!!! 思路: http://www.cnblogs.com/buerdepepeqi/p/9048130.ht ...
- 2156: 中南大学2018年ACM暑期集训前期训练题集(入门题) D: 机器人的指令
不要用gets!不要用gets!不要用gets! 不要用gets!不要用gets!不要用gets! 不要用gets!不要用gets!不要用gets! 不要用gets!不要用gets!不要用gets! ...
- 2017 ACM暑期多校联合训练 - Team 9 1008 HDU 6168 Numbers (模拟)
题目链接 Problem Description zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk gen ...
- 2017 ACM暑期多校联合训练 - Team 5 1008 HDU 6092 Rikka with Subset (找规律)
题目链接 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s ...
- 2017 ACM暑期多校联合训练 - Team 4 1007 HDU 6073 Matching In Multiplication (模拟)
题目链接 Problem Description In the mathematical discipline of graph theory, a bipartite graph is a grap ...
- 2017 ACM暑期多校联合训练 - Team 4 1012 HDU 6078 Wavel Sequence (模拟)
题目链接 Problem Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is a ...
随机推荐
- Swift Playground All In One
Swift Playground All In One Swift 5.3 Playgrounds in Xcode Xcode 11.5 https://developer.apple.com/vi ...
- Frameworkless Movement
Frameworkless Movement 无框架运动 https://www.frameworklessmovement.org/ vanilla javascript https://githu ...
- GitHub & JavaScript & Trending
GitHub & JavaScript & Trending Trending JavaScript repositories on GitHub this week https:// ...
- Flutter 使用p5
p5 工作示例 install dependencies: p5: ^0.0.5 main.dart import 'package:flutter/material.dart'; import &q ...
- NGK.IO网络安全大会暨区块链安全与应用创新论坛圆满落幕
近日,NGK.IO网络安全大会暨区块链安全与应用创新论坛于美国McCormick Place国际会议中心圆满落幕. 论坛围绕"进化繁荣发展·安全链接未来"这一主题,由NGK.IO硅 ...
- Mila Fletcher :其实高度自律的人生并没有那么难养成
在日常生活中,我们经常会发现,不论是学习,考证,工作,都需要坚持付出.但是很多人都没有办法在枯燥的学习过程中持续下去,这通常是因为不够自律导致的.但是尽管大家都知道自律是多么重要,却没有几个人可以真正 ...
- glibc内存管理那些事儿
本文转载自glibc内存管理那些事儿 Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: 进程虚拟地址空间分布 图中,0xC0000000开始的最高1G空间是内核地址空间,剩下 ...
- HQYJ嵌入式学习笔记——C语言复习day2
1.计算机的数值表示 数值类型和非数值类型 二进制 0,1 (0b1001) 八进制 0~7 (0146) 十进制 0~9 十六进制 0~f (0x3f) 八进制转二进制-->一位八进制数换 ...
- spring学习路径
1.https://zhuanlan.zhihu.com/p/72581899 spring 要点记录: (1)Web服务器的作用说穿了就是:将某个主机上的资源映射为一个URL供外界访问. (2)通过 ...
- 将VMware虚拟机最小化到托盘栏
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可. 目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...