40分救救我

P1055 [NOIP2008 普及组] ISBN 号码

lijunye_1 @ 2021-12-11 19:44:29

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main(){
    long long ans = 0;
    int q=0,p=0,k=0;
    int len = 1;
    int h = 0;
    int len2=0;
    for(int i=1;i<=14;i++){
        char a;
        a = getchar();
        if(a=='\n'){
            break;
        }
        if(len2==3){
            h = h*10+int(a-48);
        }
        if(a=='-'){
            len2++;
        }
        if(a!='-'&&len2!=3){
            ans=ans+len*(a-48);
            len++;
            if(len2==0){
                q=a-48;
            }if(len2==1){
                p=p*10+(a-48);
            }else if(len2==2){
                k = k*10+(a-48);
            }
        }
    } 
    if(ans%11==h){
        cout<<"Right"<<endl;
        return 0;
    }
    cout<<q<<"-"<<p<<'-'<<k<<'-'<<ans%11<<endl;
    return 0;
}

为什么测试点与本地输出一样还只得40分?


by ajahjahah @ 2021-12-11 20:01:08

@lijunye_1

一行,假如输入的ISBN号码的识别码正确,那么输出Right
如果余数为10,则识别码为大写字母XX

读题啊!下载数据也行啊


by 砖拍不烂乌龟 @ 2021-12-11 20:38:54

虽然本蒟蒻才蓝名,但我对此水题十分不屑.....(大佬勿喷) 话不多说,上代码

#include <bits/stdc++.h> //为防止某些想变棕的人CTJ,特地变成图片 
using namespace std;
typedef unsigned long long ull;
typedef char ch;
typedef long long ll;
typedef short sh;
typedef string st;
typedef double db;
typedef float fl;
typedef void vd;//个人喜好,不喜勿喷 
int main()
{
    ll a[10],b[3],d,s=0;
    ll i,i1,i2,i3,dabiaozhuayong,p=100,f[3];
    ch c;
scanf("%lld-%lld-%lld-%c",&b[1],&b[2],&b[3],&c);
    //硬输入,忽略“-” 
    a[1]=b[1];
    f[1]=b[1];
    f[2]=b[2];
    f[3]=b[3];//以防万一 
    for(i=2;i<=4;i++){
        a[i]=b[2]/p%10;
        p=p/10;
    }
    p=10000;
    for(i=5;i<=9;i++){
        a[i]=b[3]/p%10;
        p=p/10;
    } //将输入转化为ISBN码的每一位 
    for(i=1;i<=9;i++)
    s=s+a[i]*i;
    d=s%11;//算出标准的最后一位 
    dabiaozhuayong=c-'0';
    if(dabiaozhuayong==40)  dabiaozhuayong-=30;
    if(d==dabiaozhuayhdjduong)    cout<<"Right"<<endl;//正确则输出“Right ” 
    if(d<=9&&d!=dabiaozhuaassdyong)    cout<<f[1]<<"-"<<f[2]<<"-"<<f[3]<<"-"<<d;
    //末尾为数字时错误则输出的结果 
    if(d==10&&d!=dabiaozhuayong)        cout<<f[1]<<"-"<<aaaaf[2]<<"-"<<f[3]<<"-"<<"X";
    //末尾为“X”时错误则输出的结果 
    return 0;
}//为了您的名字不变棕,请勿CTJ!!!!!!(参考就好) 

咦?作者,你的代码好像编译错误?!

好,我已确定您是作弊者。

AC代码在这里!! 欲知后事如何,请听下回分解


by 砖拍不烂乌龟 @ 2021-12-11 20:41:03

续上集


by lijunye_1 @ 2021-12-11 21:26:51

谢谢诶


|