本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题意
Description
相信大家都做过"A+B Problem"了吧,这道题是它的加强版。
输入两个整数,表示个,例如 表示。你只需要把“A个B”开根号。如果开根号后是个整数,输出开根后的数,否则输出“We donot have SPJ!”
解题思路
很显然,这题就是让我们判断“A个B”是不是完全平方数,我们从感觉上判断,形如这样的数,一般来说都不是完全平方数,现在我们来证明一下。
证明
当时,答案显然是。
接下来我们考虑的情况:
当时,只有有解。
当时,可以用枚举法得出无解。
当时:
首先,能在开根号后是整数的,一定是完全平方数,
显然,对于任意完全平方数,有:
对于一个3位以上的数,我们可以把它拆分成其中,是一个两位数。显然:
那么对于“个”,有
对于“个”,有
所以上述情况不是完全平方数。
对于一个偶完全平方数,显然其除以后仍然是完全平方数,而
均不是完全平方数,故对于“个”不是完全平方数。
对于,我们考虑,一个完全平方数,有:
而:
故对于“个”不是完全平方数。
所以对于任意三位数及以上的的"A个B",其必定不是完全平方数。
代码
// by Concyclics
//
//
#include <iostream>
using namespace std;
int main()
{
int A,B;
cin>>A>>B;
if(B==0)
{
puts("0");
return 0;
}
if(A==1)
{
if(B==1)
{
puts("1");
return 0;
}
if(B==4)
{
puts("2");
return 0;
}
if(B==9)
{
puts("3");
return 0;
}
}
puts("We donot have SPJ!");
return 0;
}