码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5867 Water problem

时间:2016-08-19 19:10:49      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

处理出1-99的,之后的加上多少hundred和and即可。整百和一千的时候注意一下。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-8;
void File()
{
    freopen("D:\\in.txt","r",stdin);
    freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{
    char c = getchar(); x = 0;while(!isdigit(c)) c = getchar();
    while(isdigit(c)) { x = x * 10 + c - 0; c = getchar();  }
}

int a[2000];
int b[15];

int main()
{
    b[1]=3; b[2]=3; b[3]=5; b[4]=4; b[5]=4;
    b[6]=3; b[7]=5; b[8]=5; b[9]=4;

    for(int i=1;i<=9;i++) a[i]=b[i];

    a[10]=3; a[11]=6; a[12]=6; a[13]=8; a[14]=8;
    a[15]=7; a[16]=7; a[17]=9; a[18]=8; a[19]=8;

    a[20]=6; for(int i=21;i<=29;i++) a[i]=a[20]+b[i-20];
    a[30]=6; for(int i=31;i<=39;i++) a[i]=a[30]+b[i-30];
    a[40]=5; for(int i=41;i<=49;i++) a[i]=a[40]+b[i-40];
    a[50]=5; for(int i=51;i<=59;i++) a[i]=a[50]+b[i-50];
    a[60]=5; for(int i=61;i<=69;i++) a[i]=a[60]+b[i-60];
    a[70]=7; for(int i=71;i<=79;i++) a[i]=a[70]+b[i-70];
    a[80]=6; for(int i=81;i<=89;i++) a[i]=a[80]+b[i-80];
    a[90]=6; for(int i=91;i<=99;i++) a[i]=a[90]+b[i-90];

    int p;
    for(int i=100;i<=999;i++)
    {
        if(i%100==0)  p=i, a[i]=b[i/100]+7;
        else a[i]=a[p]+3+a[i-p];
    }
    a[1000]=11;

    for(int i=2;i<=1000;i++) a[i]=a[i]+a[i-1];

    int T; scanf("%d",&T);
    while(T--)
    {
        int n; scanf("%d",&n);
        printf("%d\n",a[n]);
    }
    return 0;
}

 

HDU 5867 Water problem

标签:

原文地址:http://www.cnblogs.com/zufezzt/p/5788696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!