50pts?

P1055 [NOIP2008 普及组] ISBN 号码

Sam_Gamer @ 2023-04-27 13:59:35

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[13];
    int ansx;
    int ans1;
    int ans2;
    for(int i=0;i<13;i++)
    {
        cin>>a[i];
    }
    if(a[0]>=48 && a[0]<=57  && a[2]>=48 && a[2]<=57  && a[3]>=48 && a[3]<=57 && a[4]>=48 && a[4]<=57 && a[6]>=48 && a[6]<=57 && a[7]>=48 && a[7]<=57 && a[8]>=48 && a[8]<=57 && a[9]>=48 && a[9]<=57 && a[10]>=48 && a[10]<=57 && a[12]>=48 && a[12]<=57 || a[12]=='X') 
    {
        if (a[1]=='-' && a[5]=='-' &&  a[11]=='-')
        {
            ans1=(int)a[12]-48;
            ans2=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9);
            ansx=10;
            if(ans1==ans2%11 && ans2!=10)
            {

                cout<<"Right\n";
                return 0;
            }
           else if(ans1!=ans2%11)
            {
                if(ans2==10)
                {
                    cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<'X';
                    return 0;
                }
                cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<ans2%11;
                return 0;
            }

    }

  }
        //ans=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9)%11;
        //cout<<ans%11; 
        return 0;

}

不对呀,我已经特判‘X’了.


by Sam_Gamer @ 2023-04-27 14:13:05

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[13];

    int ans1;
    int ans2;
    for(int i=0;i<13;i++)
    {
        cin>>a[i];
    }
    if(a[0]>=48 && a[0]<=57  && a[2]>=48 && a[2]<=57  && a[3]>=48 && a[3]<=57 && a[4]>=48 && a[4]<=57 && a[6]>=48 && a[6]<=57 && a[7]>=48 && a[7]<=57 && a[8]>=48 && a[8]<=57 && a[9]>=48 && a[9]<=57 && a[10]>=48 && a[10]<=57 && a[12]>=48 && a[12]<=57 || a[12]=='X') 
    {
            if(a[12]=='X')
            {
                a[12]=10;
            }
            ans1=(int)a[12]-48;
            ans2=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9);

            if(ans1==ans2%11 && ans2!=10)
            {

                cout<<"Right\n";
                return 0;
            }
           else if(ans1!=ans2%11)
            {
                if(ans2==10)
                {
                    cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<'X';
                    return 0;
                }
                cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<ans2%11;
                return 0;
            }

    }

        //ans=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9)%11;
        //cout<<ans%11; 
        return 0;
}

还是不行


by Sam_Gamer @ 2023-04-27 14:13:55

样例输出是对的.


by jiangxinyang2012 @ 2023-04-27 15:57:04

@Sam_Gamer

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[13];

    int ans1;
    int ans2;
    for(int i=0;i<13;i++)
    {
        cin>>a[i];
    }
    if(a[0]>=48 && a[0]<=57  && a[2]>=48 && a[2]<=57  && a[3]>=48 && a[3]<=57 && a[4]>=48 && a[4]<=57 && a[6]>=48 && a[6]<=57 && a[7]>=48 && a[7]<=57 && a[8]>=48 && a[8]<=57 && a[9]>=48 && a[9]<=57 && a[10]>=48 && a[10]<=57 && a[12]>=48 && a[12]<=57 || a[12]=='X') 
    {
            if(a[12]=='X')
            {
                a[12]=58;
            }
            ans1=(int)a[12]-48;
            ans2=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9);
            if(ans1==ans2%11)
            {

                cout<<"Right\n";
                return 0;
            }
           else if(ans1!=ans2%11)
            {
                if(ans2%11==10)
                {
                    cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<'X';
                    return 0;
                }
                cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<a[10]<<a[11]<<ans2%11;
                return 0;
            }

    }

        //ans=(int)(a[0]-48)+((a[2]-48)*2)+((a[3]-48)*3)+((a[4]-48)*4)+((a[6]-48)*5)+((a[7]-48)*6)+((a[8]-48)*7)+((a[9]-48)*8)+((a[10]-48)*9)%11;
        //cout<<ans%11; 
        return 0;
}

by jiangxinyang2012 @ 2023-04-27 15:58:54

if(ans2==10)

这句话有点问题,因该是

if(ans2%11==10)

by jiangxinyang2012 @ 2023-04-27 16:01:51

if(a[12]=='X')
{
    a[12]=10;
}

还有这段赋值,因该是

if(a[12]=='X')
{
    a[12]=58;
}

如果是按你那样不就是负数了吗


by jiangxinyang2012 @ 2023-04-27 16:04:28

if(ans1==ans2%11 && ans2!=10)

if(ans2==10)

的ans2各加一个“%11”


by jiangxinyang2012 @ 2023-04-27 16:05:49

改了以后就对了


by Sam_Gamer @ 2023-04-28 09:38:51

@2021Changqing60 谢谢大佬


by jiangxinyang2012 @ 2023-04-28 09:43:10

不客气


|