hdoj5867Water problem
来源:互联网 发布:怎样用mysql创建数据库 编辑:程序博客网 时间:2024/06/04 01:19
Water problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 215 Accepted Submission(s): 146
Problem Description
If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3+3+5+4+4=19 letters used in total.If all the numbers from 1 to n (up to one thousand) inclusive were written out in words, how many letters would be used?
Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases.
For each test case: There is one positive integer not greater one thousand.
For each test case: There is one positive integer not greater one thousand.
Output
For each case, print the number of letters would be used.
Sample Input
3123
Sample Output
3611
Author
BUPT
Source
2016 Multi-University Training Contest 10
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<list>#include<vector>#include<map>using namespace std;typedef long long LL;typedef pair<int,int>pii;const int maxn=1010;int num[maxn];void Count(){ num[0]=0;num[1]=num[2]=3;num[3]=5;num[4]=num[5]=4;num[6]=3;num[7]=5;num[8]=5;num[9]=4;num[10]=3;num[100]=10; num[11]=6;num[12]=6;num[13]=8;num[14]=8;num[15]=7;num[16]=7;num[17]=9;num[18]=8;num[19]=8;num[20]=6;num[30]=6;num[40]=5; num[50]=5;num[60]=5;num[70]=7;num[80]=6;num[90]=6; for(int i=2;i<=9;++i){ for(int j=1;j<=9;++j){ num[i*10+j]=num[i*10]+num[j]; } } for(int i=2;i<=9;++i){ num[i*100]=num[i]+7; } for(int i=1;i<=9;++i){ for(int j=1;j<=99;++j){ num[i*100+j]=num[i]+num[j]+10; } }num[1000]=11; for(int i=1;i<=1000;++i){ num[i]+=num[i-1]; }}int main(){ Count(); int t;scanf("%d",&t); while(t--){ int n; scanf("%d",&n); printf("%d\n",num[n]); } return 0;}
1 0
- hdoj5867Water problem
- problem
- Problem
- problem
- Problem
- Problem
- Problem
- Problem
- Problem
- Problem
- problem
- Problem
- Problem
- Problem
- Problem
- Problem
- Problem
- Problem
- asm (1) helloworld
- linux 批量创建用户和修改口令
- 【牛客网】合并两个排序的链表
- 超简单的ViewPager导航栏联动实现--TabLayout
- linux之文本处理工具
- hdoj5867Water problem
- 购物程序
- 科技论文摘要写作技巧
- Linux上文本处理三剑客之grep
- cogs2060 除法表达式【解法一】
- 如何更改ORACLE中schema或user的名字
- Linux上文本处理三剑客之sed
- linux 强大的文本编辑器 vim
- 欢迎使用CSDN-markdown编辑器