HDU 5867 Water problem(模拟题目)【HDU多校联合8.18】

来源:互联网 发布:朱苏力 知乎 编辑:程序博客网 时间:2024/06/05 07:56

题目链接:
http://acm.split.hdu.edu.cn/showproblem.php?pid=5867

简单的模拟题目。
下面是AC代码:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[22]= {0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8,6};int b[1005];int num[1005];void init(){    b[20]=6,b[30]=6,b[40]=5,b[50]=5,b[60]=5,b[70]=7,b[80]=6,b[90]=6,b[100]=7;    int sum=0;    for(int n=0; n<=1000; n++)    {        if(n<=10)        {            sum+=a[n];            num[n]=sum;            continue;        }        if(n==1000)        {            sum+=11;            num[n]=sum;            continue;        }        int n1=n/100;        int n2=n%100;        if(n2==0)        {            sum+=(a[n1]+b[100]);            num[n]=sum;            continue;        }        if(n2<=20)        {            if(n1==0)            {                sum+=a[n2];                num[n]=sum;            }            else            {                sum+=(a[n2]+3+a[n1]+b[100]);                num[n]=sum;            }        }        else        {            int n3=n2%10;            n2=(n2/10)*10;            if(n1==0)            {                sum+=(b[n2]+a[n3]);                num[n]=sum;            }            else            {                sum+=(b[n2]+a[n3]+3+a[n1]+b[100]);                num[n]=sum;            }        }    }}int main(){    int nn,t;    scanf("%d",&t);    init();    while(t--)    {        scanf("%d",&nn);        printf("%d\n",num[nn]);    }    return 0;}
0 0