数位DP
来源:互联网 发布:网络电视怎么设置频道 编辑:程序博客网 时间:2024/06/05 02:00
//hdu3555 solve函数写到主函数里就错了 不知道为什么 - -!
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<cstdio>#include<string>#include<set>#include<map>#include<queue>#include<vector>#include<stack>using namespace std;#define ll long long#define cl(a,b) memset(a,b,sizeof(a))#define N 50005#define MAXN 100005__int64 dp[30][3];void init(){ cl(dp,0); dp[0][0]=1; for(int i=1;i<=22;i++){ dp[i][0]=dp[i-1][0]*10-dp[i-1][1]; dp[i][1]=dp[i-1][0]; dp[i][2]=dp[i-1][2]*10+dp[i-1][1]; }}__int64 solve(__int64 n){ int l=0; __int64 bit[20]; while(n) { bit[++l]=n%10; n/=10; } __int64 ans=0; bool flag=false; for(int i=l;i>0;i--) { ans+=dp[i-1][2]*bit[i]; if(flag)ans+=dp[i-1][0]*bit[i]; if(!flag&&bit[i]>4)ans+=dp[i-1][1]; if(bit[i+1]==4&&bit[i]==9)flag=true; } return ans;}int main(){ int t; __int64 n; init(); scanf("%d",&t); while(t--) { scanf("%I64d",&n); printf("%I64d\n",solve(n+1)); } return 0;}
0 0
- 数位dp
- 数位DP
- 数位DP
- 数位dp
- 数位dp
- 数位dp
- 数位DP
- 数位dp
- 数位DP
- 【数位DP】
- 数位DP
- 数位dp
- 数位dp
- 数位DP
- 数位DP
- 数位dp
- 数位DP
- 数位DP
- 移植最新BusyBox
- Node.js的学习历程二同步异步调用等基础知识的理解
- 第十章 游戏时间到了
- Android 皮肤的更换
- 全期望(过河,uva 12230)
- 数位DP
- 剑指offer-算法题练习:part14 c++多线程—2个线程并发售票系统-烽火众智
- studio开发问题
- CGCS2000坐标系投影转换教程
- Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)
- web mvc简介
- cocoaPods的安装方法,淘宝镜像不在可用
- C++ nullptr
- Java日期常用操作