本题征集卡精度的数据

P8255 [NOI Online 2022 入门组] 数学游戏

一扶苏一 @ 2022-03-26 22:30:56

根据这一帖子和管理组成员的讨论,在一些情况下直接使用 sqrt 函数可能会因为误差和整形舍入得到错误的结果。

但是造数据的人太菜了不会造,如果您能提供这样的数据,请发帖或联系任何一位题目管理员,谢谢。


by ttcwws @ 2022-03-26 22:34:09

sqrtl是个好东西(


by heaksicn @ 2022-03-26 22:34:25

hack:

500000
998244353 996491788296388609
998244353 996491788296388609
998244353 996491788296388609
...
998244353 996491788296388609

by fzj2007 @ 2022-03-26 22:34:48

sqrtl就行了(


by A_zjzj @ 2022-03-26 22:34:48

而且我觉得时间上面也可以加强一下,因为我的骗分的代码过了(可是考场有地方没有转long long变成40分/kk) 提交记录:


by heaksicn @ 2022-03-26 22:34:51

可以卡掉ylmylm的代码。


by A_zjzj @ 2022-03-26 22:35:18

这里


by cleverxia @ 2022-03-26 23:06:23

@heaksicnhhhylm 太单一了,判重能过

生成器:

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    srand(time(0));//我一般用c++11<random>
    cout<<100000<<endl;
   for(int i=1000000000;i>999950000;i--)cout<<i<<' '<<i*i<<endl<<i<<' '<<i*i-rand()%i<<endl;
   }

by 比利♂海灵顿 @ 2022-03-27 08:30:03

@heaksicnhhhylm 你这本来就是 -1, 就算它搞成 .999999 也无所谓啊.


by qijt @ 2022-03-28 13:10:26

hack

8 32

输出

2


by ColinKIA @ 2022-04-01 22:48:44

严重怀疑民间数据有问题,按照官方题解思路做,民间数据wa了??????

#include <cstdio>
#include <cmath>
long long T,x,z,d,y;
long long gcd(long long x, long long y) {
    if (x%y==0) return y;
    else return gcd(y, x%y);
}
int main(){
    scanf("%lld",&T);
    while(T--){
        scanf("%lld%lld",&x,&z);
        if(z % x){
            printf("-1\n");
            continue;
        }
        d=sqrt(gcd(x*x,z/x)),y=z/x/d;
        if (gcd(x, y)==d){
            printf("%lld\n",y);
        } else {
            printf("-1\n");
        }
    }
    return 0;
}

| 下一页