90分,O2AC

P1055 [NOIP2008 普及组] ISBN 号码

siyeansh @ 2021-08-10 17:03:41

#include<bits/stdc++.h>
using namespace std;
int main(void){
  char s[14],mod[12]="0123456789X";
  gets(s);
  int i,j=1,t=0;
  for(i=0;i<12;i++) {
        if(s[i]=='-') continue;
    t+=(s[i]-'0')*j++;
  }
  if(mod[t%11]==s[12])printf("Right");
  else {
      s[12]=mod[t%11];
      puts(s);
  }
  return 0;
}

by HYdroKomide @ 2021-08-10 17:09:10

@孤鹜断崖 int main(void) 应该不行吧


by siyeansh @ 2021-08-10 17:16:18

@Kevin_FOS 回,可以,这思路我是看题解的。


by SmokedFish @ 2021-08-10 17:23:00

@孤鹜断崖 简单来说就是 gets 会读到 \r 导致您 s 数组不能只开到 14,要再多开一个……或者换个字符串读入方式比如 scanf


by siyeansh @ 2021-08-10 17:30:04

@郑代梅zdm 回:多谢兄台已经过了,互关吧。

#include<bits/stdc++.h>
using namespace std;
int main(void){
  char s[20],mod[12]="0123456789X";
  gets(s);
  int i,j=1,t=0;
  for(i=0;i<12;i++) {
        if(s[i]=='-') continue;
    t+=(s[i]-'0')*j++;
  }
  if(mod[t%11]==s[12])printf("Right");
  else {
      s[12]=mod[t%11];
      puts(s);
  }
  return 0;
}

|