P10253 说唱
赛时做不出来,看了官方题解很喵哇
题目分析
首先,将
那么对于给定的一个
-
判断是否有
,如果是,那么答案为 ,直接退出。 -
将
加上 ,维护 和 (其中 为 )。 -
若
,直接结束判 ,否则执行第一步(原因是 最大为 , 为 的位数)。
复杂度分析:给一个数进行
代码
注释很详细了 qwq。
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define ll long long
#define space putchar(' ')
#define enter putchar('\n')
using namespace std;
typedef pair <int, int> pii;
typedef vector <int> vi;
inline int read() {
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9') f = c == '-' ? -1 : f, c = getchar();
while (c >= '0' && c <= '9') x = (x<<3)+(x<<1)+(c^48), c = getchar();
return x*f;
}
inline void write(int x) {
if (x < 0) x = -x, putchar('-');
if (x > 9) write(x/10);
putchar('0'+x%10);
}
const int N = 5e5+5;
int p[N], y[N];
void solve() {
memset(p, 0, sizeof(p));
memset(y, 0, sizeof(y));
string s; cin >> s;
y[0] = s.size();//第0储存长度
for (int i = 0; s[i]; ++i) y[y[0]-i] = s[i]-'0';//低位对应低位
for (int i = 1; i <= y[0]; ++i) {
p[i] += y[i]*9;
p[i+1] += p[i]/10;
p[i] %= 10;
}//先p=9y
p[0] = y[0]+1;
while (p[0] > 1 && !p[p[0]]) --p[0];
int sum = 0, d = 0;
if (p[1]) {
d = 10-p[1];//d=p-9y
++p[2], ++p[0], p[1] = 0;//变成10的倍数
for (int i = 1; i <= p[0]; ++i) if (p[i] > 9) ++p[i+1], p[i] = 0;
while (p[0] > 1 && !p[p[0]]) --p[0];
}
for (int i = 1; i <= p[0]; ++i) sum += p[i];//sum即为S
while (1) {
if (sum == d) {
if (p[0] >= 2) for (int i = p[0]; i >= 2; --i) write(p[i]);
else write(0);
enter;
return;
}
++p[2], ++p[0]; ++sum;//加10
for (int i = 2; i <= p[0]; ++i) {
if (p[i] <= 9) break;
else ++p[i+1], p[i] = 0, sum -= 9;
}
while (p[0] > 1 && !p[p[0]]) --p[0];
d += 10;
if (d > 9*y[0]) break;
}
write(-1), enter;
}
int main() {
int t = read();
while (t--) solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)