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

作业1-224——P1015 [NOIP1999 普及组] 回文数

题目描述

思路 

首先此题为一道高精度题,然后本题按照题目意思模拟即可。我们可以开两个数组来记录高精度数字,这样方便我们处理。判断“该数组是否回文”、“c翻转存入d再做c+d”可以写成两个单独的函数。然后主程序组织一下他们即可。注意好退出循环的条件。

还用到ASCll码~

参考代码

#include<bits/stdc++.h>
const int S=303;
int n,a[S],l;
char c[S],d[S];
inline void add()
{
    for (int i=0;i<l;++i)
        d[l-i-1]=c[i];
    l+=2;
    for (int i=0;i<l;++i)
    {
        c[i]+=d[i];
        if (c[i]>=n) c[i+1]++,c[i]-=n;
    }
    while (!c[l-1]) --l;
}
inline bool pd()
{
    for (int i=0;i<l;++i)
        if (c[i]!=c[l-1-i]) return false;
    return true;
}
int main()
{
    scanf("%d",&n);
    scanf("%s",s);
    l=strlen(c);
    for (int i=0;i<l;++i)
    {
        if (c[i]>='0' && c[i]<='9') c[i]-='0';
        else c[i]=c[i]-"A"+10;
    }
    int step=0;
    while (!pd())
    {
        ++step;
        if (step>30) break;
        add();
    }
    if (step<=30) printf("STEP=%d\n",step);
    else puts("Impossible!");
    return 0;
}

简化代码

#include <bits/stdc++.h>
const int S=303;
int n,a[S],l;
char c[S],d[S];
 void add()
{
    for (int i=0;i<l;++i)
        d[l-i-1]=c[i];
    l+=2;
    for (int i=0;i<l;++i)
    {
        c[i]+=d[i];
        if (c[i]>=n) c[i+1]++;c[i]-=n;
    }
    while (!c[l-1]) --l;
 bool pd()
{
    for (int i=0;i<l;++i)
        if (c[i]!=c[l-1-i]) return false;
    return true;
}
int main()
{
    scanf("%d",&n);
    scanf("%s",s);
    l=strlen(c);
    for (int i=0;i<l;++i)
    {
        if (c[i]>='0' && c[i]<='9') c[i]-='0';
        else c[i]=c[i]-55;
    }
    int step=0;
    while (!pd())
    {
        ++step;
        if (step>30) break;
        add();
    }
    if (step<=30) printf("STEP=%d\n",step);
    else puts("Impossible!");
    return 0;
}-->inline可以不要,A可以转换为ASCll数字;

学会的知识

代码可以简化,带字符可以转换为ASCll数字;

http://www.lryc.cn/news/308927.html

相关文章:

  • 后端知识(理解背诵)
  • 构造pop链
  • JAVA设计模式——创建型模式
  • 队列的结构概念和实现
  • Linux系统上使用C语言创建线程
  • pc端如何做自适应呢?
  • c语言经典测试题8
  • 解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
  • ETL数据仓库的使用方式
  • POST参数里加号+变成空格的问题处理
  • 【华为面试基础题】检查是否存在满足条件的数字组合
  • 亚信安慧AntDB数据并行加载工具的实现(一)
  • 面经 | Java创建线程的三种方式
  • 【计算机网络】五种IO模型与IO多路转接之select
  • 通过一篇文章让你了解数据结构和算法的重要性
  • python代码优化学习
  • C#,数值计算,求解微分方程的吉尔(Gear)四阶方法与源代码
  • 2024年新提出的算法|LEA爱情进化算法(Love Evolution Algorithm)
  • javaWeb个人学习02
  • EchoServer回显服务器封装与测试
  • 详解POCV/SOCV的时序报告
  • [VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)
  • 网络通信技术
  • 【刷题】位运算
  • C++重新入门-string容器
  • C语言头歌:指针进阶
  • 【C++】一个求数组中最大元素的函数模板
  • SpringCloud Alibaba(保姆级入门及操作)
  • SpringBoot集成Activiti案例
  • Vulnhub靶机:basic_pentesting_2