Hdu 3555
来源:互联网 发布:淘宝十大数码皇冠店铺 编辑:程序博客网 时间:2024/05/04 18:38
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define maxn 22
#define LL __int64
int digit[maxn];
LL dp[maxn][3];
void init()
{
dp[0][0] = 1;
for( int i = 1; i < 22; i++)
{
dp[i][0]=10*dp[i-1][0]-dp[i-1][1]; // 在dp[i-1][0]前面添上0~9,但是要减去dp[i-1][1] 因为4和9构成49
dp[i][1]=dp[i-1][0]; // 直接在dp[i-1][0]前面添上9就行了
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]; // 在dp[i-1][2]前面添上0~9,或者在dp[i-1][1]前面添上4
}
}
int main()
{
LL n;
init();
int t;
scanf("%d",&t);
while(t--)
{
LL ans = 0;
int cnt = 1;
scanf("%I64d",&n);
memset(digit, 0, sizeof(digit));
while(n)
{
digit[cnt++] = n%10;
n/=10;
}
bool flag = false;
for( int i = cnt - 1; i >= 1; i--)
{
ans += dp[i-1][2]*digit[i];
if(flag)
ans += dp[i-1][0] * digit[i];
else if(digit[i] > 4)
ans += dp[i-1][1];
if(digit[i] == 9 && digit[i+1] == 4)
flag = true;
}
if(flag)
ans++;
printf("%I64d\n",ans);
}
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define maxn 22
#define LL __int64
int digit[maxn];
LL dp[maxn][3];
void init()
{
dp[0][0] = 1;
for( int i = 1; i < 22; i++)
{
//dp[i][0] len = i,不含49 //dp[i][1] len = i,不含49但是以9开头 //dp[i][2] len = i,含有49
dp[i][0]=10*dp[i-1][0]-dp[i-1][1]; // 在dp[i-1][0]前面添上0~9,但是要减去dp[i-1][1] 因为4和9构成49
dp[i][1]=dp[i-1][0]; // 直接在dp[i-1][0]前面添上9就行了
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]; // 在dp[i-1][2]前面添上0~9,或者在dp[i-1][1]前面添上4
}
}
int main()
{
LL n;
init();
int t;
scanf("%d",&t);
while(t--)
{
LL ans = 0;
int cnt = 1;
scanf("%I64d",&n);
memset(digit, 0, sizeof(digit));
while(n)
{
digit[cnt++] = n%10;
n/=10;
}
bool flag = false;
for( int i = cnt - 1; i >= 1; i--)
{
ans += dp[i-1][2]*digit[i];
if(flag)
ans += dp[i-1][0] * digit[i];
else if(digit[i] > 4)
ans += dp[i-1][1];
if(digit[i] == 9 && digit[i+1] == 4)
flag = true;
}
if(flag)
ans++;
printf("%I64d\n",ans);
}
return 0;
}
0 0
- hdu 2089 && hdu 3555
- hdu HDU 3555 Bomb
- HDU.2089 & HDU.3555
- hdu 3555
- HDU 3555
- hdu 3555
- Hdu 3555
- hdu 3555
- hdu 3555
- HDU 3555
- Hdu 3555
- 数位动态规划(acm hdu 3555 ,hdu 2089,hdu 4278)
- hdu 3709+hdu 3555(数位dp)
- hdu 2089 & hdu 3555 (数位DP)
- HDU 3555 HDU 2089(数位DP)
- HDU 2089 & HDU 3555 数位dp
- hdu 3555 数位dp
- hdu 3555 Bomb
- MSSQL如何对非中文排序规划的数据库、表进行拼音排序
- 怎么下载啊
- 你好啊!教你几种快速祛斑的方法,顺便推荐一款祛斑
- 相宜本草祛斑产品如何?我来告诉你哦!
- 解耦的故事--权限设计
- Hdu 3555
- 《人月神话》读后感
- swift 中问号和叹号的区别
- 《人月神话》读后感
- Linux命令之service - 系统服务管理
- 解决ADT大量出现"Unexpected value from nativeGetEnabledTags: 0"的问题
- Android开发之Activity管理
- 数字信号处理实践——基于matlab的音频信号分析即处理
- 地方个梵蒂冈丰东股份对个梵蒂冈丰东股份对