该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Description
如果某个数的平方的末尾即尾数等于这个数,那么就称这个数为自守数。例如,5和6都是自守数(5x5=25 6x6=36)。同样,25x25=625 76x76=5776,所以25和76也是自守数。虽然0和1的平方的个位数仍然是0和1,但是他们太“平凡”了,研究他们没有意义,所以不算自守数。现在就请大家编写程序,来判断输入的数n(0≤n≤200000)是否为自守数。
Input
输入包含多组测试数据,要求处理到EOF(End Of Fiie)为止。
Output
输出判断结果,如果是自守数,输出为YES,不是自守数,输出为NO。
Sample Input
0
25
78
109376
Sample Output
NO
YES
NO
YES
我的代码如下,不过数大了结果就错误了,不知道怎么修改 ,帮忙看看
#include
using namespace std;
int main()
{ long fun(int n);
long N,a;
double mult;
int x;
while (scanf("%ld",&N)!=EOF)
{
if(N==0||N==1)
{
cout<
continue ;
}
else if(N>1&&N<10)
x=1;
else if(N>=10&&N<100)
x=2;
else if(N>=100&&N<1000)
x=3;
else if(N>=1000&&N<10000)
x=4;
else if(N>=10000&&N<100000)
x=5;
else if(N>=100000&&N<200000)
x=6;
mult=N*N;
a=(long)mult%(fun(x));
if(N==a)
cout<
else
cout<
}
return 0;
}
long fun(int n)
{ long sq=1;
int i;
for(i=0;i
sq=10*sq;
return sq;
}