Comet OJ - Contest #0 A 解方程

题目链接: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

【代码】

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=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");
	    continue;
        }
        if(n%4!=0)
	{
            puts("0 0");
	    continue;
        }
        n/=4;
        for(int y=1;(ll)y*y<=n;++y)
	{
            if(n%y==0)
	    {
                cnt++;
		ans=(ans+((n/y+y)*ll(n))%maxn)%maxn;
            }
        }
        printf("%d %d\n",cnt,ans);
    }
    return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/88969614