Gym - 100338E

题意:给你n,k问在1-n中能整出k的字典序最小的数。范围1018

思路:比较简单的贪心了,枚举10的幂m,然后加上k-m%k, 更新答案就可以了,数据一定要用unsigned long long,我就在这里挂了几次,查了半天。

 #include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define LL unsigned long long
#define eps 1e-8
#define INF 0x3f3f3f3f
#define MAXN 10005
using namespace std;
LL n, k;
LL m[];
//char s[25], res[25];
vector<char> s, t, res;
int main()
{
#ifdef ONLINE_JUDGE
freopen("numbers.in", "r", stdin);
freopen("numbers.out", "w", stdout);
#endif //ONLINE_JUDGE
m[] = ;
for (int i = ; i <= ; i++){
m[i] = m[i - ] * 10ULL;
}
while (~scanf("%I64d%I64d", &n, &k)){
if (n == && k == ) break;
for (int i = ; i <= ; i++){
LL p = m[i] % k == ? m[i] : m[i] + k - (m[i] % k);
if (p > n) break;
if (p % k != ) continue;
t.clear();
while (p != ){
t.push_back(p % 10ULL + '');
p /= 10ULL;
}
s.clear();
for (int j = t.size() - ; j >= ; j--){
s.push_back(t[j]);
}
if (i == ){
res = s;
continue;
}
bool flag = true;
for (int j = ; j < s.size(); j++){
if (res.size() < j + ){
flag = true;
break;
}
if (s[j] > res[j]){
flag = true;
break;
}
if (s[j] == res[j]) continue;
flag = false;
break;
}
if (flag) continue;
res = s;
}
for (int i = ; i < res.size(); i++){
printf("%c", res[i]);
}
printf("\n");
}
}

最新文章

  1. 分布式文件系统 - FastDFS 简单了解一下
  2. 存储过程中的output跟return区别及实例说明
  3. Js位置与大小(1)&mdash;&mdash;正确理解和运用与尺寸大小相关的DOM属性
  4. POJ 3233 Matrix Power Series 矩阵快速幂+二分求和
  5. 【JAVA版】Storm程序整合Kafka、Mongodb示例及部署
  6. Spring基于注解的Cache支持
  7. 【转】android中重复连接ble设备导致的连接后直接返回STATE_DISCONNECTED的解决办法---不错不错,重新连接需要花费很长的时间
  8. Android 监听器
  9. [JQuery] Ajax使用过程中的问题总结
  10. 福利:Axure 8.0 Pro 破解版下载
  11. MORE XOR
  12. SQL反模式学习笔记11 限定列的有效值
  13. java 8 双冒号运算符
  14. C# Note21: 扩展方法(Extension Method)及其应用
  15. [Docker]CentOS7下Docker安装教程
  16. 我们为什么要在Android中使用RxJava
  17. 特性(attribute)
  18. Tomcat常用设置及安全管理规范
  19. android的图片的初步学习理解
  20. Linux 操作系统文件略解

热门文章

  1. springMVC接受数组
  2. java zyUpload 实现多文件上传
  3. c 和 指针读书笔记(1)
  4. pandas 2 选择数据
  5. python 模块一览
  6. reactor模式与java nio
  7. 具体解释C++引用——带你走进引用的世界
  8. SDUTOJ 2776 小P的故事——奇妙的分组
  9. 我的modelsim常用DO文件设置
  10. PostgreSQL Replication之第九章 与pgpool一起工作(4)