当前位置: 代码迷 >> 综合 >> Comet OJ - Contest #0 A 解方程
  详细解决方案

Comet OJ - Contest #0 A 解方程

热度:32   发布时间:2023-12-26 09:42:23.0

题目链接:https://www.cometoj.com/contest/34/problem/A?problem_id=1473

小象同学在初等教育时期遇到了一个复杂的数学题,题目是这样的:

【分析】官方题解:

当时表达式处理了一下,但是并没有发现些啥么...

x-\sqrt{n}=(\sqrt{y}-\sqrt{z})^{2}

如果n可以开方的话,则有 y=z, x^{2}=n  这时候就是有无穷多组解

如果n不可以开方,则展开,有

           x-\sqrt{n}=y+z-2\sqrt{yz}

          \begin{matrix} x=y+z & \\n=4yz & \end{matrix}

那么n一定是4的倍数;则z=n/4/y, x=y+n/4/y;

【代码】

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const ll mod=1e9+7;
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int ans=0,cnt=0; int p=sqrt(n);if(p*p==n)puts("infty");else if(n%4!=0)puts("0 0");else{n/=4;for(int y=1;(ll)y*y<=n;++y){if(n%y==0){cnt++;ans=(ans+((n/y+y)*ll(n))%mod)%mod;}}printf("%d %d\n",cnt,ans);}}
} 

 

  相关解决方案