比赛 2022级数学专题练习赛5 评测结果 AAWWWAAAAA
题目名称 Pell方程 最终得分 70
用户昵称 op_组撒头屯 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-01-09 20:49:35
显示代码纯文本
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define ull unsigned long long
  5. #define ld long double
  6. #define pii pair<int,int>
  7. #define vi vector<int>
  8. #define si set<int>
  9. #define qi queue<int>
  10. #define sti stack<int>
  11. #define fi first
  12. #define se second
  13. #define pb push_back
  14. const int N=10000000+5;
  15. ll calc(ll x,ll lim){
  16. ll l=1,r=lim;
  17. while(l<r){
  18. ll mid=(l+r+1)/2;
  19. if (mid*mid<=x)l=mid;
  20. else r=mid-1;
  21. }
  22. return l;
  23. }
  24. int main(){
  25. freopen ("pell.in","r",stdin);
  26. freopen ("pell.out","w",stdout);
  27. ll n;scanf("%lld",&n);
  28. for (ll k=1;;k++){
  29. ll y=n*k*k-2*k;
  30. ll s=calc(y,k*n-1);
  31. if (s*s==y){
  32. printf("%lld %lld\n",k*n-1,s);return 0;
  33. }
  34. y=n*k*k+2*k;
  35. s=calc(y,k*n+1);
  36. if (s*s==y){
  37. printf("%lld %lld\n",k*n+1,s);return 0;
  38. }
  39. }
  40. printf("genshin\n");
  41. return 0;
  42. }
  43.