玄学错误
查看原帖
玄学错误
1008513
xiaoshumiao楼主2023/12/22 17:14

以下代码是 4040 分:

#include<cstdio>
#include<cmath>
using namespace std;
int main() {
  int n;
  scanf("%d",&n);
  int m=0;
  char ch=getchar();
  ch=getchar();
  while(ch>='0'&&ch<='9') {
  	m=(m*10+ch-'0')%n;
  	ch=getchar();
  }
  if(m==0)
    printf("%d\n",n);
  else
    printf("%d\n",m);
  return 0;
}

在 IDE 测 #3 结果是对的。猜测是换行符的问题,于是改成了如下的代码:

#include<cstdio>
#include<cmath>
using namespace std;
int main() {
  int n;
  scanf("%d",&n);
  int m=0;
  char ch=getchar();
  ch=getchar();
  ch=getchar();
  while(ch>='0'&&ch<='9') {
  	m=(m*10+ch-'0')%n;
  	ch=getchar();
  }
  if(m==0)
    printf("%d\n",n);
  else
    printf("%d\n",m);
  return 0;
}

在 IDE #3 是错的,但交上去 AC 了!怎么回事?是不是数据有问题?

2023/12/22 17:14
加载中...