为什么这个答案不起作用,仅适用于一个测试用例?

问题描述

问题链接:https://codeforces.com/contest/1551/problem/A 解决方案:

#include<bits/stdc++.h>
using namespace std;
typedef long double  ll;
void solve(){
  long int n;
  cin>>n;
  long int d=n/3;
  n=n-d;
  ll s= ll (n)/2;
  cout<<round(s)<<" "<<d;
  cout<<endl;
}
int main(){
  long t;
  cin>>t;
    while(t--){
    solve();
  }
  return 0;
}

它适用于所有其他测试用例,但不适用于 10^9 为什么会这样?

解决方法

它适用于所有其他测试用例,但不适用于 10^9 为什么会这样?

它不适用于许多测试用例,即第一个数字以指数(科学)表示法打印的所有情况以及 n 小于 3 的倍数的所有情况,其中 c1 出现 1 到高和 c2 1 太低。第一个缺陷可以通过将 round 的结果转换为 long 来修复,第二个缺陷可以通过更正 (n%3==2) 的计算来修复。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...