codeforces Gym 100338E Numbers (贪心,实现)
2015-08-21 18:04
603 查看
题目:http://codeforces.com/gym/100338/attachments
贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案。
贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案。
#include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; const int maxbit = 19; ull base[maxbit], n, k; void preDeal() { base[0] = 1; for(int i = 1; i < maxbit; i++){ base[i] = 10*base[i-1]; } } void ull2str(ull x,string& s) { int st[maxbit],top = 0; while(x){ st[top++] = x%10+'0'; x /= 10; } reverse(st,st+top); s.assign(st,st+top); } void work() { priority_queue<string,vector<string>,greater<string> > q; int sz = maxbit-1; while(base[sz]>n) sz--; string str; for(int i = 0; i <= sz; i++){ ull cur = base[i]; ull r = cur%k; if(r != 0){ cur += k-r; } if(cur <= n){ ull2str(cur,str); q.push(str); } } printf("%s\n",q.top().c_str()); } int main() { freopen("numbers.in","r",stdin); freopen("numbers.out","w",stdout); preDeal(); while(scanf("%I64u%I64u",&n,&k),n){ work(); } return 0; }
相关文章推荐
- 服务器 数据库 问题定位的几个工具
- ubuntu->桌面版-常用设置
- 移动开发博客汇总
- 优秀项目经理应备技能01-项目管理需要知道的几个概念
- .net运行原理
- Scanner类中的微妙关系
- mt7601 Build Instructions
- PLX9056 PCI卡驱动:PCI 总线
- 学习泰课的Unity3D黑黯之光RPG游戏开发(二)——课时1至课时16
- JUnit 执行顺序
- 【电子电路】上拉电阻与下拉电阻有什么作用
- js对象 函数
- HTTP返回状态值及用途
- 土木狗自己写的土石方计算程序,控制台程序,只因太菜。。。
- 具有 Button 风格的 Panel(覆盖TCustomPanel的Paint函数,用到了ThemeServices)
- Unity3d之协程自实现测试
- mysql查询各种类型的前N条记录
- GIT的标准文档 使用和服务介绍
- nginx的web连接出现过多的TIME_WAIT
- Longest Common Prefix