X Round 2(毒瘤比赛qwq)
程序员文章站
2022-05-15 16:15:50
[TOC] 大佬说 幻想与真实 预计分数:$100+0+0+0+0+0=100.$ 实际分数:$0+0+0+0+0+0=0$ 【XR 2】缘分 题目 "戳" 思路 $gcd(a,b) lcm(a,b)=a b$ 当 $gcd==1$ 时 $lcm$ 最大等于$a b$,而想要$gcd==1$要满足的 ......
大佬说
幻想与真实
预计分数:$100+0+0+0+0+0=100.$
实际分数:$0+0+0+0+0+0=0$
【xr-2】缘分
题目
思路
$gcd(a,b) * lcm(a,b)=a * b$
当 $gcd==1$ 时 $lcm$ 最大等于$a * b$,而想要$gcd==1$要满足的条件是$a⊥b$。
所以是求小于等于$n$的最大的两个不相等的质数(如果相等的话最后的答案就是小于等于$n$的最大的质数(将这个数称为$x$),这个数肯定小于$x * 2$。
所以思路应该正确,$qwq$。
code
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<algorithm> using namespace std; int t; int test[15]= {2,7,61}; unsigned long long temp[3]; inline int read(){ int x=0; bool f=0; char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return f?-x:x; }//读入优化 inline void write(unsigned long long x){ if(x/10) write(x/10); putchar(x%10+'0'); }//输出优化 inline long long qpow(int a,int b,int c) {//快速幂。不会的可以去做一下p1226 if(b==0) return 1%c; long long ans=1,base=a; while(b) { if(b & 1) ans*=base; ans%=c; base*=base; base%=c; b>>=1; } return ans; } inline bool mb(int p) {//miller-rabin算法。 if(p==1) return 0; if(p==2) return 1; int t=p-1,k=0; while(!(t&1)) { k++; t>>=1; } for(int i=0;i<=2;++i) { if(p==test[i]) return 1; long long a=qpow(test[i],t,p),nx=a; for(int j=1;j<=k;++j) { nx=(a*a)%p; if(nx==1&&a!=1&&a!=p-1) return 0; a=nx; } if(a!=1) return 0; } return 1; } int main(){ t=read(); int n; while(t--){ n=read(); int sum=0; for(int i=n;i>=1;--i){ if(mb(i)){ temp[++sum]=i; if(sum==2) break; } } if(temp[1]*temp[2]==0) printf("0"); write(temp[1]*temp[2]); puts(""); } return 0; }
现实永远是残酷的
提交之后全$wa$,只能慢慢差错了(思路应该没错吧,$qwq$)。
$error1$
没有特判$n==1$的情况。然后加上继续$wa,qwq$。(我太菜了这题果然毒瘤。)
$jio$的自己太菜
不用快读和快输了,改成$scanf() & printf()$。继续$wa$。
$error2$
没有特判$n==0$的情况。然后加上继续$wa,qwq$。
$error3$
思路错了,qwq
【xr-2】奇迹
题目
戳。
思路
$n/a$
code
n/a
【xr-2】伤痕
题目
戳。
思路
$n/a$
code
n/a
【xr-2】约定
题目
戳。
思路
$n/a$
code
n/a
【xr-2】记忆
题目
戳。
思路
$n/a$
code
n/a
【xr-2】永恒
题目
戳。
思路
$n/a$
code
n/a