当前位置: 首页 > news >正文

题解:洛谷 P2005 A/B Problem II

【题目来源】

洛谷:P2005 A/B Problem II - 洛谷

【题目描述】

给出正整数 \(N\)\(M\),请你计算 \(\lfloor\frac{N}{M}\rfloor\)\(\frac{N}{M}\) 的下取整)。

【输入】

两行,两个正整数,\(N\)\(M\)

【输出】

一行,一个整数,表示 \(\lfloor\frac{N}{M}\rfloor\)

【输入样例】

1000 
333

【输出样例】

3

【算法标签】

《洛谷 P2005 A/B Problem II》 #高精度# #二分#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 20005;
struct BIG
{int len, num[N];BIG(){// 构造函数:将高精度数字初始化为0memset(num, 0, sizeof(num));len = 1;}void set(int x){// 将int类型数字x转化为高精度数字memset(num, 0, sizeof(num));len = 0;while (x>0){num[++len] = x % 10;x /= 10;}if (len==0) len = 1;  // 特判0的情况}void set(string s){// 将string类型转化为高精度数字memset(num, 0, sizeof(num));len = s.size();for (int i=1; i<=len; i++)num[i] = s[len-i] - '0';}void print(){// 输出高精度数字for (int i=len; i>=1; i--)cout << num[i];cout << endl;}
};
BIG operator*(BIG a, int b)
{BIG c;c.len = a.len;int u = 0;for (int i=1; i<=c.len; i++){int t = a.num[i] * b + u;c.num[i] = t % 10;u = t / 10;}while (u>0){c.num[++c.len] = u % 10;u /= 10;}return c;
}
BIG A, B, C;
string s1, s2;
signed main() {cin >> s1 >> s2;A.set(s1);B.set(s2);int l = 0, r = 1e18;while (l < r) {int mid = (l + r + 1) / 2;  // 注意:向上取整cout << "mid " << mid << endl;C = B * mid;cout << "c " << endl;C.print();// 检查 b*mid 是否 ≤ abool condition = true;if (C.num[0] > A.num[0]) {// b*mid的位数比a多,肯定大于acondition = false;} else if (C.num[0] < A.num[0]) {// b*mid的位数比a少,肯定小于acondition = true;} else {// 位数相同,逐位比较bool less = false, greater = false;for (int i = C.num[0]; i >= 1; i--) {if (C.num[i] < A.num[i]) {less = true;break;} else if (C.num[i] > A.num[i]) {greater = true;break;}}// 如果c == a 或 c < a,条件成立condition = !greater;  // 不大于就是小于等于}if (condition) {l = mid;  // 可以尝试更大的mid} else {r = mid - 1;  // 太大了}}cout << l << endl;return 0;
}

【运行结果】

1000 
333
3
http://www.jsqmd.com/news/477469/

相关文章:

  • Oracle快速生成测试数据:从创建表到主键约束
  • OpenRAG横空出世,集成Langflow+OpenSearch,一文读懂RAG框架终极选型指南
  • 实战案例十一:产品经理效率提升 - PRD 自动生成与竞品分析
  • 益生菌排行榜10大品牌 2026年高活菌款选购指南脆弱肠道人群必看 - 资讯焦点
  • 30 分钟部署 OpenClaw:Windows 系统专属 AI 助手,远程操控更自由
  • php方案 PHP 实现 CAN 总线协议解析 - 汽车电子、工业总线的 DBC 文件解析
  • Winform之SuspendLayout的作用
  • 2026 AI风向标:DeepSeek引爆开源革命,AI Agent成新生产力
  • 2026科技政策申报热门品牌盘点,助力企业高效获取扶持,目前科技政策申报实力厂家精选实力品牌榜单发布 - 品牌推荐师
  • STM32 DIY飞控板 | 四轴飞行器从设计到组装到上天全攻略
  • Cesium全球FFT海洋特效
  • 揭秘软著在评职称中的隐藏加分项!职场晋升必备攻略!
  • 前端项目同时使用svn和gitee管理代码
  • TypeScript 极简指南:那个尖括号 <T> 到底是什么?
  • OpenClaw Channel 对接飞书:从零到一实现企业级 AI 助理
  • 使用 storcli 将 LSI RAID 硬盘从 JBOD 模式改为 RAID 模式
  • 杭州宙宇未来科学技术有限公司靠谱吗?从官方资质看企业实力 - 资讯焦点
  • OpenClaw简介
  • 生成式AI教育公平的五大现实障碍
  • Human IgE His-Tagged Protein:从过敏介质到肿瘤免疫治疗的创新突破
  • 查出5级组织树结构
  • iOS 解决 4.3a【二进制加固】
  • 国产数据库选型实战:MySQL迁移的兼容性、安全与性能落地
  • 使用AsyncOpenAI通过LLM Proxy网关异步调用多种大模型的实践指南
  • 2026年公众号SVG互动排版指南 3款微信编辑器权威测评 - 资讯焦点
  • linux内核高端内存映射-kmap/kunmap
  • 毕业设计实战:基于Spring Boot的家电销售展示平台设计与实现全攻略
  • influxdb(时序数据库)+mqtt(emqx+mqtt客户端)
  • 基于Matlab的数字信号处理音频FIR去噪滤波器探索
  • PowerShell 设置默认读取某个文件夹