本文共 1255 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要编写一个程序来判断一个整数是否为守形数。守形数的定义是它的平方的低位部分等于它本身。例如,25的平方是625,低位部分是25,因此25是一个守形数。
#include#include #include #include #include using namespace std;int main() { int n; while (scanf("%d", &n) != EOF) { int d = 0; int temp = n; while (temp != 0) { d++; temp /= 10; } long long square = pow(n, 2); int mod = 1; for (int i = 0; i < d; i++) { mod *= 10; } long long last_part = square % mod; if (last_part == n) { printf("Yes!\n"); } else { printf("No!\n"); } memset(&n, 0, sizeof(int)); memset(&square, 0, sizeof(long long)); memset(&last_part, 0, sizeof(long long)); memset(&mod, 0, sizeof(int)); } return 0;}
scanf
函数读取输入,直到EOF
为止。pow
函数计算输入整数的平方,并将结果存储在long long
类型中以避免精度问题。mod
,这个模数等于10的d次方。然后使用模运算截取平方结果的末尾d位。这个方法通过数学运算高效地解决了问题,确保了代码的正确性和效率。
转载地址:http://sxtp.baihongyu.com/