题目链接:https://www.cometoj.com/contest/34/problem/A?problem_id=1473
小象同学在初等教育时期遇到了一个复杂的数学题,题目是这样的:
【分析】官方题解:
当时表达式处理了一下,但是并没有发现些啥么...
如果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;
}