UVA 11361Investigating Div-Sum Property
2016-03-16 01:03
441 查看
题意:求在[a,b]这个区间内有多少个数x满足,x%k==0&&x的各个位上的数的和y%k==0。
分析:《算法竞赛入门经典训练指南》数学基础例题5。
代码:
#include<map> #include<set> #include<cmath> #include<queue> #include<bitset> #include<math.h> #include<cstdio> #include<vector> #include<string> #include<cstring> #include<iostream> #include<algorithm> #pragma comment(linker, "/STACK:102400000,102400000") using namespace std; const int N=2000010; const int MAX=151; const int MOD1=1000007; const int MOD2=100000009; const double EPS=0.00000001; typedef long long ll; const ll MOD=1000000007; const ll INF=10000000010; typedef unsigned long long ull; int k,q[12][90][90],dp[12][90][90],ten[12]; int get(int w,int u,int v) { if (w==0&&u==0&&v==0) return 1; if (w==0) return 0; if (q[w][u][v]) return dp[w][u][v]; for (int i=0;i<10;i++) dp[w][u][v]+=get(w-1,((u+i)%k+k)%k,((v+i*ten[w])%k+k)%k); q[w][u][v]=1; return dp[w][u][v]; } int d[15]; int pd(int x) { int y=x,sum=0; while (x) { sum+=x%10;x/=10; } if (sum%k==0&&y%k==0) return 1; return 0; } int cala(int x) { int i,j,u=0,v=0,g=0,ret=0; if (pd(x)) ret++; while (x) { d[++g]=x%10;x/=10; } for (i=g;i>0;i--) { for (j=0;j<d[i];j++) ret+=get(i-1,((u+j)%k+k)%k,((v+j*ten[i])%k+k)%k); u=((u+d[i])%k+k)%k; v=((v+d[i]*ten[i])%k+k)%k; } return ret; } int main() { int a,b,t,i; scanf("%d", &t); while (t--) { scanf("%d%d%d", &a, &b, &k); if (k>=90) printf("0\n"); else { memset(q,0,sizeof(q)); memset(dp,0,sizeof(dp)); ten[1]=1;for (i=2;i<=10;i++) ten[i]=(ten[i-1]*10%k+k)%k; printf("%d\n", cala(b)-cala(a-1)); } } return 0; }
相关文章推荐
- 使用 xsd.exe 命令工具将 xsd 架构生成 类(CS) 文件
- centos7 开发环境配置
- Centos 7 开启端口
- 从域名锁定该网站所在城市
- 在创业公司做架构师
- 最新精简型Linux桌面环境大比拼:LXDE Vs Xfce Vs MATE
- tomcat 启动报 操作系统找不到已输入的环境选项
- Linux用户管理笔记
- 网站运营思维导图模板
- 国内首家研发的在线直播网站系统
- 搭建nginx+tomcat+Java的负载均衡环境
- CentOS 6 同一台机器部署多个Tomcat应用服务器
- linux关闭防火墙以及开启远程连接
- rsync同步常用命令
- linux简单用户管理
- Tomcat 设置内存和在eclipse中的设置
- 让站长满意的网站空间特好用的免备案服务器Q320005871
- OpenGL中一种高效的线段反走样技术
- Linux 系统忘记mysql root密码
- 安装Nginx