博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)
阅读量:4708 次
发布时间:2019-06-10

本文共 1234 字,大约阅读时间需要 4 分钟。

其实挺简单的。先直接算出之前已经排在k这个数前面的数字。比如543是三位的,那么100~543都是可以的,两位的10~54。

如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能选,10000~54300。

有一种情况样例4是10000~10000,,这样是不会增加的应该输出'0'。

#include
using namespace std;typedef long long ll;int dig[89],sz;void dec(ll k){ sz = 0; while(k){ dig[sz++] = k%10; k /= 10; } reverse(dig,dig+sz);}int main(){ freopen("amusing.in","r",stdin); freopen("amusing.out","w",stdout); ll K,M; cin>>K>>M; ll a = 0; dec(K); for(int i = sz; i > 0; i--){ ll data = 0,low = 1; for(int j = 0; j < i; j++){ data = data*10+dig[j]; low *= 10; } a += data - low/10+1; } if(a > M) { printf("0\n"); return 0; } if(a == M){ printf("%I64d\n",K); return 0; } ll b = M-a; for(int i = sz+1; ; i++){ ll data = 0,low = 1; for(int j = 0; j < i; j++){ data = data*10+dig[j]; low *= 10; } ll t = data - low/10; if(!t) { printf("0\n"); return 0; } if(b <= t){ low /= 10; printf("%I64d\n",b-1+low); return 0; } b -= t; } return 0;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4782394.html

你可能感兴趣的文章
20155226 《网络对抗》Exp9 Web安全基础
查看>>
运维经验(转)
查看>>
css文本类型操作
查看>>
nginx
查看>>
原生JS操作iframe里的dom
查看>>
javascript运算符instanceof
查看>>
(十二)Struts2 数据库访问
查看>>
Javascript生成UUID(方法2)
查看>>
JS闭包中的循环绑定处理程序
查看>>
计算机是如何启动的?
查看>>
Halcon一日一练:图像、变量实时更新
查看>>
Android 定时器Timer的使用
查看>>
module.exports与exports,export与export default之间的关系和区别
查看>>
巧用css内容生成
查看>>
java基础-enum
查看>>
关于git 使用的一些摘录和总结
查看>>
一个项目的细节点
查看>>
Unity3D笔记十五 碰撞、移动
查看>>
未能加载文件或程序集XXX或它的某一个依赖项。试图加载格式不正确的程序。...
查看>>
第四天
查看>>