PAT (Advanced Level) 1049. Counting Ones (30)
2016-05-25 16:00
357 查看
数位DP。dp[i][j]表示i位,最高位为j的情况下总共有多少1.
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<map> #include<queue> #include<string> #include<vector> using namespace std; long long dp[15][15]; char s[20]; void init() { memset(dp,0,sizeof dp); long long num=1; for(int i=1; i<=10; i++) { for(int j=0; j<=9; j++) { if(j==1) dp[i][j]=num; for(int s=0; s<=9; s++) dp[i][j]=dp[i][j]+dp[i-1][s]; } num=num*10; } } int main() { init(); while(~scanf("%s",s)) { int len=strlen(s); long long n=0; for(int i=0; s[i]; i++) n=n*10+s[i]-'0'; long long ans=0; for(int i=0; i<s[0]-'0'; i++) ans=ans+dp[len][i]; for(int i=1; s[i]; i++) { int d=len-i; for(int j=0; j<s[i]-'0'; j++) ans=ans+dp[d][j]; } long long x=0; for(int i=0; s[i]; i++) { x=x*10+s[i]-'0'; if(s[i]=='1') { long long tmp=x; for(int j=i+1; s[j]; j++) tmp=tmp*10; ans=ans+n-tmp+1; } } printf("%lld\n",ans); } return 0; }
相关文章推荐
- tomcat配置环境启动闪屏
- ImageVIew缩放问题
- MyBatis 物理分页
- vr的延迟和渲染效率优化与Nvidia VRWorks
- 【Egret】中tree组件使用案例
- 架构师进阶之路
- spark pregel计算pageRanks
- iOS中tableView的刷新机制
- 从0到1 ▏Netty编解码框架之多种常用解码器使用示例解析
- 看黑马安卓基础教学视频总结(通知栏&反编译&Fragment)
- jenkins-info-send-build-artifacts-over-ssh
- sql中nvarchar(max)长度测试
- Bmob后端云使用步骤
- 参数传递二维数组
- kvm常见故障及解决方案
- decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
- securecrt同时向多个tab窗口发送相同的命令
- Android学习笔记四大组件之Activity
- spring的annotation-driven配置事务管理器详解
- Java-String类的常用方法总结