题解 | #自守数#

自守数

https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e

#include <stdio.h>
#include<math.h>
// int main() {
//     int n=0;

//     scanf("%d",&n);
//     if(n>10)
//     {
//         int count=1;
//     for(int i=0;i<=n;i++)
//     {
//         int arr[9]={0};
//         int p=i*i;
//         int j=0;
//         while(p)
//         {
//             arr[j++]=p%10;
//             p=p/10;
//         }
//         int sum=0;
//         for(int i=0;i<(j==1?1:j/2);i++)
//         {
//             sum+=arr[i]*pow(10,i);
//         }
//         if(sum==i)
//             count++;
//     }
//     printf("%d",count);
//     }
//     else {
//         int count=0;
//          for(int i=0;i<=n;i++)
//     {
//         int arr[9]={0};
//         int p=i*i;
//         int j=0;
//         while(p)
//         {
//             arr[j++]=p%10;
//             p=p/10;
//         }
//         int sum=0;
//         for(int i=0;i<(j==1?1:j/2);i++)
//         {
//             sum+=arr[i]*pow(10,i);
//         }
//         if(sum==i)
//             count++;
//     }
//     printf("%d",count);
//     }
//     return 0;
// }

int main() {
    int count = 0;
    int n = 0;
    scanf("%d", &n);
    for (int i = 0; i <= n; i++) {
        int p = i * i;
        int len = 0;
        int m = i;
        while (m) {
            m /= 10;
            len++;
        }
        int arr[10] = { 0 };
        int j = 0;
        while (p) {
            arr[j] = p % 10;
            j++;
            p /= 10;
        }
        int sum = 0;
        for (int k = 0; k < len ; k++) {
            sum = sum + arr[k] * pow(10, k);
        }
        if (sum == i)
            count++;
    }
    printf("%d", count);
    return 0;
}

全部评论

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务