没什么。。。。

简介: 没什么。。。。

用 h 表明当前余数 即现阶段被除数

如果 h < b 需要补位 最后一位无数可补

最后需要去掉数字前面的0 但要考虑到商本身就是0的情况

#include
using namespace std;
int a[100005];
int ans[100005];
int main(){
long long b;
string aa;
cin>>aa>>b;
int n=aa.length();
for(int i=0;i<n;i++){
a[i]=aa[i]-‘0’;
}
long long h=a[0];
int i=0;
while(i<n){
if(h<b){
if(i==n-1)
break;
h*=10;
h+=a[++i];
}
ans[i]=h/b;
h%=b;
}
int pd=1;
for(int i=0;i<n;i++){
if(pd&&ans[i]0){
continue;
}else if(ans[i]!=0){
pd=0;
}
cout<<ans[i];
}
if(pd1)
cout<<0;
cout<<endl;
cout<<h;
return 0;
}

题目描述

给定两个非负整数(不含前导 00) AA,BB,请你计算 A/BA/B 的商和余数。

输入格式

共两行,第一行包含整数 AA,第二行包含整数 BB。

输出格式

共两行,第一行输出所求的商,第二行输出所求余数。

数据范围

1≤A的长度≤1000001≤A的长度≤100000,

1≤B≤100001≤B≤10000,

BB 一定不为 0

输入样例:

7

2

输出样例:

3

1

算法1

(高精度) O(n2)O(n2)

高精度除法要求求出商和余数,那我们的思路就是:把上一次的余数乘10,再加上当前位上的数,就是被除数,后面往C(答案)里压入这个数字除以bb,就可以得到商在这个位置上的数字。

时间复杂度

参考文献

C++ 代码

#include
#include
#include
using namespace std;
vector div(vector &A,int b,int &r){ // 取r的地址符,是为了更改r的值,方便后面输出余数
vector C; // 答案
r = 0; // 余数
for(int i = A.size() - 1;i >= 0;i --){ // 从最高位开始处理
r = r * 10 + A[i]; // 上一次的余数乘10,再加上当前位上的数,就是被除数
C.push_back(r / b); // 往C里压入这个被除数除b
r %= b; // 计算余数
}
reverse(C.begin(),C.end()); // 因为除法运算中从高位开始计算,而前导0都在顶部而不是底部,所以要翻转过来
while (C.size() > 1 && C.back() == 0) C.pop_back(); // 去除前导0
return C; // 返回答案
}
int main(){
string a;
int b;
cin>>a>>b;
vector A;
for(int i = a.size() - 1;i >= 0;i --) A.push_back(a[i] - ‘0’); // 倒序
int r;
auto C = div(A,b,r); // 答案
for(int i = C.size() - 1;i >= 0;i --) cout<<C[i];
cout<<endl<<r<<endl;
return 0;
}
3

mex函数

将图上一个点可以到达的所有点的mex值组成一个集合

集合中不存在的最小自然数

此题用到的图

将终点状态(所有无法继续操作的石子数)的mex值设为0

起点为其中一堆石子的石子数

通过每种石子数可以到达的状态算出起点的mex值

就像这样:(样例的第3堆石子)

它的mex值就是:

所以mex(7)=0

必胜态和必败态

(这里只考虑一幅图)

当这幅图的起点的mex值为0

就是必败态

否则就是必胜态

原因:

从mex值的定义可以看出

当一个点的mex值为0

它一定只能到达mex值不为0的点

当一个点的mex值不为0

它一定可以到达mex值为0的点(双方都绝顶聪明,所以一定会到达mex值为0的点)

这时因为所有终点的mex值都是0

所以起点的mex值为零

说明先手一定走不到终点

所以是必败态

否则先手一定会走到终点

就是必胜态

解题方法

把n堆石子作为n幅图的起始点

每一步只能选择一幅图走一步

一个点的mex值为x

说明它可以到达mex值为0~x-1中任意一个自然数的点

所以可以从起点的mex值中拿取任意数值

有n个起点

这不就是经典nim游戏吗?!

所以把所有图起点的mex值亦或起来,就是结果

C++ 代码

#include
#include
#include<unordered_set>
using namespace std;
int f[10005],s[105],k,n;
int sg(int x){ //用来求mex值
if(f[x]!=-1) //记忆化搜索,可以优化掉不少
return f[x];
unordered_set vis; //用来记录所有可以到达的点的mex值
for(int i=0;i<k;i++)
if(x>=s[i]) //可以这么拿
vis.insert(sg(x-s[i]));
for(int i=0;;i++)
if(!vis.count(i))
return f[x]=i; //求出x点的mex值
}
int main(){
memset(f,-1,sizeof f);
scanf(“%d”,&k);
for(int i=0;i<k;i++)
scanf(“%d”,&s[i]);
scanf(“%d”,&n);
int ans=0;
while(n–){
int now;
scanf(“%d”,&now);
ans^=sg(now);
}
puts(ans?“Yes”:“No”);
return 0;
}
相关文章
|
4天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
7天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
411 93
|
7天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
402 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
6天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
295 158
|
14天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。