2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)
2015-09-04 21:35
615 查看
其实挺简单的。先直接算出之前已经排在k这个数前面的数字。比如543是三位的,那么100~543都是可以的,两位的10~54。
如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能选,10000~54300。
有一种情况样例4是10000~10000,,这样是不会增加的应该输出'0'。
如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能选,10000~54300。
有一种情况样例4是10000~10000,,这样是不会增加的应该输出'0'。
#include<bits/stdc++.h> 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; }
相关文章推荐
- Linux操作系统-进程和信号(2)
- 破解优酷战略迷局
- centos安装nginx
- wamp2.5(Apache2.4.9+PHP5.5.12)关于多站点的配置
- Linux(Ubuntu)下面SecureCRT 完全破解
- Google将惩罚大面积展示APP应用安装广告的网站
- 使用Keepalived构建高可用热备
- CentOS 5.5下安装MySQL 5.5全过程分享
- NSComparisonResul、NSNotFound、NSEnumerationOptions......的用处
- Linux压缩打包方法连载之三:bzip2, bzcat 命令
- nginx主配置文件 在那找怎么打开
- Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点
- bash环境变量
- Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置)
- linux命令,个人的日记本
- linux磁盘管理以及linux文件系统管理
- Spring JTA multiple resource transactions in Tomcat with Atomikos example
- Hadoop集群假设
- sentinel运维监控
- 嵌入式linux之DMA驱动