已经对X进行了特判,还是70分,没法AC

P1055 [NOIP2008 普及组] ISBN 号码

XMLC7737 @ 2023-04-10 22:25:27

更改后,第4个测试点正常
从60分变成70分
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;

string a, b, temp;
int ans;
bool no = false;
int main()
{
    cin >> a;
    ostringstream ss;
    ss << a[0] << a[2] << a[3] << a[4] << a[6] << a[7] << a[8] << a[9] << a[10];
    b = ss.str();
    ostringstream ikun;
    ikun << a[0] << a[1] << a[2] << a[3] << a[4] << a[5] << a[6] << a[7] << a[8] << a[9] << a[10] << a[11];
    temp = ikun.str();
    if(a[12]=='X' || a[12]=='x') no=true;
    for (int i = 0; i < 9; i++)
    {
        if (b[i] != 'X')
            ans += (int)(b[i] - '0') * (i + 1);
    }
    if (no == false)
    {
        if (ans % 11 == (int)(a[12] - '0'))
            printf("Right");
        else
            cout << temp << ans % 11;
    }
    else{
         if (ans % 11 == 10)
            printf("Right");
        else
            cout << temp << ans % 11;     
    }
}

by Leon4 @ 2023-04-17 20:29:52

#include<bits/stdc++.h>
using namespace std;
char st[100];
int t,step,ans,l;
int main(){
    scanf("%s",st);
    l=strlen(st);
    for(int i=0;i<l-1;i++){
        if(st[i]>='0'&&st[i]<='9'){
            t++;
            step=st[i]-'0';
            ans+=step*t;
            cout<<ans<<endl;
        }
    }   
    if(ans%11==10){
        if(st[l-1]=='X')cout<<"Right";
        else {
            for(int i=0;i<l-1;i++)cout<<st[i];
            cout<<"X";
        }
    }
    else{
        step=st[l-1]-'0';
        if(ans%11==step)cout<<"Right";
        else if(ans%11!=step){
            for(int i=0;i<l-1;i++)cout<<st[i];
            printf("%d",ans%11);
        }
    }
} 

70分代码求解


|