URAL - 1233 (计数题目-处理的时候比较麻烦)
2013-08-05 16:06
253 查看
#include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<set> #include<map> #include<list> #include<queue> #include<vector> #define tree int o,int l,int r #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define lo o<<1 #define ro o<<1|1 #define LL unsigned long long #define inf 0x7fffffffffffffff #define eps 1e-7 #define M 9901 #define N 100009 using namespace std; LL T,n,m,k,t,maxv; LL f[20]; void init() { f[0]=1; for(int i=1; i<20; ++i) f[i]=f[i-1]*10ll; } LL ok(LL n,LL k)//k的名次 { LL t=log10(n)+1; LL tk=log10(k)+1; LL ans=0; for(int i=1; i<=t; i++) { if(i<=tk) ans+=k/f[tk-i]-f[i-1]+1;//加了自己! else if(i!=t) ans+=k*f[i-tk]-f[i-1]; else if(k*f[i-tk]<n) ans+=k*f[i-tk]-f[i-1]; else if(k*f[i-tk]>n) ans+=n-f[i-1]+1; else ans+=n-f[i-1]; } return ans; } bool check(LL k,LL m) { LL t=log10(k); if(k/f[t]==1&&k%f[t]==0&&t+1<m)return 1; return 0; } int main() { #ifndef ONLINE_JUDGE freopen("ex.in","r",stdin); #endif init(); while(scanf("%I64d%I64d",&k,&m)==2) { if(ok(k,k)>m||check(k,m)) { puts("0"); continue; } LL l=k,r=inf; while(l<r) { LL mid=(l+r)>>1; if(ok(mid,k)<m) l=mid+1; else r=mid; } printf("%I64d\n",l); } return 0; }
相关文章推荐
- 在项目中用到datatables比较多,但是当datatables加载超过1000多的时候就会出现有点缓慢的的样子,这个时候如果继续增加数据量让datatables去处理,那会是一个让人抓狂的事情,幸
- 描述:用户在sudo一个命令的时候必须输入root密码。用起来比较麻烦。
- shell字符串相等比较,注意对字符串为空的时候的处理
- 处理 BITMAPINFO 结构体中的 bmiColors 这个成员 <比较麻烦>
- Hibernate在处理数据量比较大的时候内存不释放的解决方案
- 写了一个程序用来处理字符串,把一张列表中的题目序号提取出来,然后跟自己昨晚的列表比较,找出来还没有做过的题目列表
- matlab 中的数据维数过大的时候怎么处理及技巧
- QTP对象库和TestComplete对象处理比较
- input类型为file时,博客园,chrome,FF和IE8的fakepath题目处理惩罚办法
- excel处理数字的时候避免自动转为double
- leetcode -- Simplify Path -- 字符串处理的题目
- [转]几种图像处理类库的比较
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
- 海量数据(数据量比较大时)的处理分析
- AsyncTask 与Thread加Handler处理消息比较
- 业务初期野蛮生长阶段,微服务化比较麻烦
- HTMLParser(一个比较流行的html代码解析、处理开源项目)学习,总结
- 题目1169:比较奇偶数个数
- Android6.0中设置权限时候的SecurityException异常的处理
- Python文件处理——文件的读写和计数