大佬求助,全RE了

P1015 [NOIP1999 普及组] 回文数

Michael_Liu @ 2023-07-26 11:02:02

#include <bits/stdc++.h>
using namespace std;
bool f=false,flag=true;

string hui(string n) // 倒转 
{
    string t="";
    int len=n.size();
    for(int i=len-1;i>=0;i--)
    {
        t=t+n[i];
    }
    return t;
}

bool check(string n) // 判断是否为回文数 
{
    string t=hui(n);
    if(n==t)
    {
        return true;
    }
    else 
    {
        return false;
    }
}

int zci(char c) // 字符转整数 
{
    int num=0;
    if(c<='9'&&c>='0')
    {
        num=c-'0';
    }
    else
    {
        if(c>='A'&&c<='Z')
        {
            num=c-'A'+10;
        }
    }
    return num;
}

char zic(int n) // 整数转字符 
{
    char c;
    if(n>=0&&n<=9)
    {
        c='0'+n;
    }
    else
    {
        c='A'+(n-10);
    }
}

string jia(string a,string b,int n) // 字符串加法 
{
    a="0"+a;
    b="0"+b;
    string ans="";
    int len=a.size();
    int x=0,sum=0;
    int num1=0,num2=0;
    for(int i=0;i<=len-1;i++)
    {
//      cout<<len-i-1<<endl;
        num1=zci(a[len-i-1]);
        num2=zci(b[len-i-1]);
        sum=num1+num2+x;
        if(i==len-1)
        {
            if(sum==0)
            {
                break;
            }
        }
        ans=zic(sum%n)+ans;
        x=sum/n;
        sum=0;
    }
    return ans;
}

int main()
{
    int n,cnt=0;
    cin>>n;
    string s;
    cin>>s;
    string t1=s,t2="",sum="";
    while(!check(t1))
    {
        t2=hui(t1);
        sum=jia(t1,t2,n);
        t1=sum;
        cnt++;
        if(cnt>=30)
        {
            break;
            flag=false;
        }
    } 
    if(flag)
    {
        cout<<"STEP="<<cnt<<endl;
    }
    else
    {
        cout<<"Impossible!"<<endl;
    }
    return 0;
} 

by furina_superstar @ 2023-07-26 11:33:35

@Michael_Liu 把O2关掉


by Michael_Liu @ 2023-07-26 11:52:47

@wangyansen 谢谢大佬,全过了
蒟蒻想问一下为啥开O2就不行了啊,谢谢大佬!


by furina_superstar @ 2023-07-26 14:26:24

@Michael_Liu 不太了解,好像是zic函数没有返回值,但是是char类型的,开了O2判断函数书写不标准(我也是听别人说的),你把char换成void应该也能过


by Michael_Liu @ 2023-07-26 14:50:55

@wangyansen 哎呀!把返回打漏了,刚才加了一句return c; 开O2也过了
谢谢大佬!


|