CodeVS 1045 回文数
题目大意:
http://codevs.cn/problem/1045/
代码:
#include <iostream> #include <cstring> using namespace std; int n,m; char ch[500]; int arr[500]; void print() { for(int i = 0 ; i < 500; i++) { if(arr[i] != -1) cout << arr[i] << " " ; else break; } cout << endl; } void add() { int tmp[500]; int arr1[500]; int count = 0; int l = 0; for(int i = 0; i < 500; i++) { if(arr[i] != -1) l++; else break; } l--; for(int i = l, j = 0; i >= 0 ;i--, j++) { arr1[j] = arr[i]; } int flag = 0; while(l >= 0) { int t = (arr[l] + arr1[l] + flag) % n; flag = (arr[l] + arr1[l] + flag) / n; tmp[count++] = t; l--; } if(flag == 1) tmp[count++] = 1; for(int i = count - 1, j = 0; i >= 0; i--, j++) { arr[j] = tmp[i]; } } bool judge() { int l = 0; for(int i = 0; i < 500; i++) { if(arr[i] != -1) l++; else break; } l--; int s = 0; while(s <= l) { if(arr[s] == arr[l]) { s++; l--; } else return false; } return true; } int main() { cin >> n >> ch; for(int i = 0; i < 500; i++) arr[i] = -1; for(int i = 0; i < strlen(ch); i++) { int tmp = ch[i] - '0'; if(tmp <= 9) arr[i] = tmp; else arr[i] = tmp - 7; } for(int i = 0; i <= 30; i++) { if(!judge()) { add(); } else { cout <<"STEP=" << i << endl; return 0; } } cout << "Impossible!" << endl; return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
2016-10-19 leetcode 28. Implement strStr()
2016-10-19 21. Merge Two Sorted Lists
2016-10-19 leetcode 15. 3Sum