首页 > 试题广场 >

守形数

[编程题]守形数
  • 热度指数:14297 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。

输入描述:
输入包括1个整数N,2<=N<100。


输出描述:
可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。
示例1

输入

25
4

输出

Yes!
No!
#include <stdbool.h>
#include <stdio.h>
#include <math.h>

void Initiative(int A[], int B[]) {
    for (int i = 0; i < 4; i++) {
        A[i] = -1;
        B[i] = -1;
    }
    B[4] = B[5] = -1;
}

void Build(int A[], int B[], int x, int result) {
    for (int i = 3; i >= 0; i--) {
        if ((x != 0)) {
            A[i] = x % 10;
            x /= 10;
        }
    }
    for (int j=5; j>=0; j--) {
        if ((result != 0)) {
            B[j] = result % 10;
            result /= 10;
        }
    }
}

bool IsKeepShape(int A[],int B[]){
    int i=3;
    int j=5;
    while(A[i]==B[j]){
        i--;
        j--;
    }
    if (A[i]==-1) {
        return true;
    }
    else {
        return false;
    }
}
int main() {
    int x, result;
    while (scanf("%d", &x) != EOF) {
        int A[4], B[6];
        Initiative(A, B);
        result = pow(x, 2);
        Build(A, B, x, result);
        bool flag=IsKeepShape(A, B);
        if (flag) {
            printf("Yes!\n");
        }
        else {
            printf("No!\n");
        }
    }
    return 0;
}

发表于 2024-02-02 11:48:50 回复(0)
#include <stdio.h>

int main() {
    int a;
    while(scanf("%d",&a)!=EOF){
        if(a>=2&&a<=9){
            if((a*a-a)%10==0){
                printf("Yes!\n");
            }
            else printf("No!\n");
        }
        if(a>=10&&a<100){
            if((a*a-a)%100==0){
                printf("Yes!\n");
            }
            else printf("No!\n");
        }
    }
    return 0;
}


发表于 2023-03-02 20:44:14 回复(0)
///KY217 守形数
#include <stdio.h>
int main() {
    int x;
    while (scanf("%d", &x) != EOF) {
        int xx = x * x;
        int f = 0, t = 1;
        while ((xx / t) != 0) {
            if (xx % t == x || x == 1) {
                f = 1;

                break;
            }
            t *= 10;
        }
        if (f == 1)
            printf("Yes!\n");
        else
            printf("No!\n");

    }
    return 0;
}

发表于 2023-01-28 21:12:19 回复(0)
#include <stdio.h>

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int m=n,a=0,aa=0,d=0,b=0,i=0,c=0,r=1;
        while(m!=0){
            i++;
            m=m/10;
        }
        a=n*n;
        aa=a;
     //   printf("%d\n",i);

        for(c=0;c<i;c++)
            r=r*10;
        a=a%r;

    //        printf("%d\n",a);
        if(n==a){
            printf("Yes!\n");
        }
        else{
            printf("No!\n");
        }
    }
}

发表于 2022-01-23 14:18:38 回复(0)
#include <stdio.h>

int main(){
    int N,a;
    while(scanf("%d",&N)!=EOF){
        a=N*N;
        while(N!=0&&(N%10 == a%10)){
            N=N/10;
            a=a/10;
        }
        if(N==0) printf("Yes!\n");
        else printf("No!\n");
    }
    return 0;
}
发表于 2022-01-17 23:08:28 回复(0)
#include<stdio.h>
int main(){
    int n,m;
    while(~scanf("%d",&n)){
        m=n*n;
        while(n>0){
            if(n%10!=m%10)
            {
                printf("No!\n");
                break;
            }
            n/=10;
            m/=10;
        }if(n<=0) printf("Yes!\n");
    }
}

发表于 2021-12-27 11:25:13 回复(0)

问题信息

难度:
6条回答 13913浏览

热门推荐

通过挑战的用户

查看代码