HDU 5867 打表
来源:互联网 发布:sql developer怎么卸载 编辑:程序博客网 时间:2024/06/05 04:18
然后这个题意也蛮简单,就是给你一个不大于1000的数,然后问它的英文表示有多少个字符。如342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters
然后第一反应是打表,都记录下来
其中也是有细节的,所以会WA
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int vis[1005];void timec(){ memset(vis,0,sizeof(vis)); vis[1]=3,vis[2]=3,vis[3]=5,vis[4]=4,vis[5]=4,vis[6]=3,vis[7]=5,vis[8]=5,vis[9]=4,vis[10]=3; vis[11]=6,vis[12]=6,vis[13]=8,vis[14]=8,vis[15]=7,vis[16]=7,vis[17]=9,vis[18]=8,vis[19]=8; vis[20]=6,vis[30]=6,vis[40]=5,vis[50]=5,vis[60]=5,vis[70]=7,vis[80]=6,vis[90]=6;//不要写 vis[100]=7; for(int i=21;i<1000;i++) { if(vis[i]!=0) continue;//这个要注意 int bw=i/100; int sw=(i%100)/10; int gw=i%10; if(bw>0) vis[i]=vis[bw]+7; if(sw>=2)//注意是2.。。因为十几的数你不是都赋值了么。如14是一个整体 vis[i]+=vis[sw*10]+vis[gw]; else vis[i]+=vis[i%100]; if(bw>0&&((gw>0)||(sw>0))) vis[i]+=3; } vis[1000]=11;//1000别忘了}int main(){ int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); long long ans=0; timec(); for(int i=1;i<=n;i++) ans+=vis[i]; cout<<ans<<endl; // cout<<ans<<endl; } return 0;}
0 0
- HDU 5867 打表
- hdu 2136 打表
- hdu 1061打表
- HDU 1056 打表
- hdu 4389 囧,打表
- HDU-4706 dfs打表
- hdu 1215 数论 +打表
- hdu 4715(打表)
- hdu 4715 素数打表
- hdu 4548 素数打表
- 二 HDU 4907 打表
- HDU 5317(打表)
- hdu 1331 (暴力打表)
- hdu--2089(打表)
- hdu 5676 dfs打表
- hdu 1286 素数打表
- hdu 2136 素数打表
- hdu 5878 二分+打表
- codevs 1073 家族 并查集
- Java之TCP通讯
- js面试题--红绿灯切换效果
- android 闹钟与通知---练习
- HDU 5857
- HDU 5867 打表
- 识别和分析事物问题的思维方法
- viewpager导致的fragment嵌套不触发onActivityResult方法不触发解决方式
- eclipse 使用maven 构建web项目
- PAT-B 1021. 个位数统计 (15)
- mysql运维之服务器日志
- 设置popupWindow布局里面的控件
- bus_type
- python自动化之路-javascript补充