hdoj-2089-不要62
来源:互联网 发布:php 下载为电子文档 编辑:程序博客网 时间:2024/05/17 06:38
题目:不要62
代码1:(TLE)
#include<stdio.h>#include<string.h>int main(){ int n,m,i,j,t=0; int a,b,sum=0,k=0; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0 && m==0)break; for(i=n;i<=m;i++) { a=i; b=i; sum++; while(a>0) { if(a%100==62) { sum--; k=1; //printf("%d -1\n",a); break; } a=a/10; }//是不是62 while(b>0) { if(b%10==4 && k==0) { //printf("%d -2\n",b); sum--; break; } b=b/10; }//位数是否含四 k=0; } printf("%d\n",sum); } return 0;}
说实在,我认为我的代码T有一点说不过去。但是它T了,discuss里也是哀声四起。hdoj里面虽说有很多好题目,但是其中个别题目质量堪忧,比如2090算菜价,明明要求四舍五入(printf("%.1lf\n",(n*m+0.05));
),但是提交评测以后居然是WA,删除以后AC。
这道容易懂的题目有一种更省时间的算法,我没看到它之前没有想到这个方法。这里也贴出来:
#include<stdio.h>int data[1000005];int main(){ int m,n; int i; int t; int sum; for(i=4;i<=1000003;i++) { t=i; while(t) { if(t%10==4||t%100==62) data[i]=1;//符合要求数组存1 t/=10; } } while(scanf("%d%d",&m,&n)!=EOF) { sum=0; if(m==0&&n==0) break; for(i=m;i<=n;i++) sum+=data[i]; printf("%d\n",n-m+1-sum); } return 0;}
先从很大范围内找出符合要求的所有数,若符合要求数组存1,之后再在输入流里面累加,n-m+1-sum
。
先在大范围中找出符合要求的数存入数组,在需要使用的时候调用数组内元素。省时的一种小技巧。
0 0
- HDOJ 2089 不要62
- HDOJ 2089 不要62
- hdoj 2089 不要62
- HDOJ 2089 不要62
- 不要62 hdoj 2089
- HDOJ 2089 不要62
- HDOJ 2089 不要62
- hdoj 2089 不要62
- HDOJ 2089 不要62
- 【HDOJ 2089】不要62
- HDOJ--2089--不要62
- hdoj-2089-不要62
- HDOJ-2089 不要62
- HDOJ 2089 不要62
- hdoj 2089 不要62
- HDOJ 2089 不要62
- hdoj-【2089 不要62】
- HDOJ.2089 不要62
- 使用fio测试磁盘I/O性能
- hdoj-2098-分拆素数和
- Redis和Memcache对比及选择
- 3GPP规范命名规则解读
- 深度优先搜索之小z的房子与验证码识别
- hdoj-2089-不要62
- 在C中使用LuaJit FFI
- CentOS 使用httpd 配置局域网 yum源
- hdoj-2086-A1=?
- 代码不止于工作
- 礼拜五log~js 自定义map实现方法put和get
- iOS 沙盒图片保存读取
- c++11改进我们的模式之改进单例模式
- BFS-迷宫问题-用宽度(广度)优先搜索解决最优路径问题