注册 登录
编程论坛 C语言论坛

新人初来乍到,请各路高手指点!谢谢!

lalalalala12 发布于 2020-11-05 14:57, 3260 次点击
这个C语言编程如何判断自守数:
【题目描述】

自守数是指一个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。 如果是,则输出Yes,否则输出No。

【输入】

一个自然数。

【输出】

如果是自守数,输出Yes,否则输出No。

【样例输入】

5↙

【样例输出】

Yes
11 回复
#2
风过无痕19892020-11-05 15:27
回复 楼主 lalalalala12
差点没被你晕死:252 = 625,762 = 5776,你就不能这样写呀:25^2 = 625,76^2 = 5776
稍等,这就帮你做。。。
程序代码:

#include<stdio.h>
int main()
{
    int n, M;
    scanf_s("%d", &n);

    M = n * n;
    if (M >= 1000 && M < 998002)  // 999 x 999 = 998001
    {
        if (n == M % 1000)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M >= 100 && M < 9802)     // 99 x 99 = 9801
    {
        if (n == M % 100)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M >= 10 && M < 81)         // 9 x 9 = 81
    {
        if (n == M % 10)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M < 10)
    {
        printf("%d 不是一个自守数\n",n);
    }
    printf("\n");
}



[此贴子已经被作者于2020-11-5 16:11编辑过]

#3
lalalalala122020-11-05 15:36
回复 2楼 风过无痕1989
谢谢!我已想到解法了。
#4
自学的数学2020-11-05 21:06
程序代码:
#include <stdio.h>

int main()

{

 long a,b,i=1;

 scanf("%ld",&a);

 b=a;

 do

 {

 b=b/10;

 i*=10;

 }while(b>0);

 if(a*a%i==a)

 printf("Yes\n");

 else

 printf("No\n");

 return 0;
}
#5
请输入密码2020-11-19 17:17
很久没上论坛,难得找到个可以练手的,我也来试试。

程序代码:

#include<stdio.h>

int main( void )
{
    unsigned s;
    unsigned n;
    unsigned res;
              
    scanf("%u%n",&s,&n);

    if ( s == 0)
        res = 0;
    else
        res = (s*(s-1)) % (10*n);
   
    puts( res? "No" : "Yes" );
               
    return 0;
}


[此贴子已经被作者于2020-11-19 18:12编辑过]

#6
llc_xz2020-11-23 03:49
#include<stdio.h>

int main()
{
    int i, m;
    printf("input a natural number:");
    scanf("%d", &i);
    m = i * i;
    do{
        i = i / 10;
        m = m / 10;
    }while (i % 10 == m % 10);
    puts(i == 0 ? "yes" : "no");
    return 0;
}
#7
尔二2020-12-02 21:40
回复 2楼 风过无痕1989
你这个printf输出是原数。。。(25是自守数,输出的是25,不是625。)
#8
风过无痕19892020-12-03 15:53
回复 7楼 尔二
此题目做完了,也就没再看了。现在看到,你提出了异议
我程序 printf(),可不就是 25,哪里有输出 625?
举个例子:假设 n = 25 (这是一个自守数),它的平方 M = 625,
if(n = = M % 100),即 if(25 = = 625 % 100)  printf("%d 是一个自守数",n)
如果写成 printf("%d 是一个自守数",M),那就是错误的了
#9
尔二2020-12-03 21:12
回复 8楼 风过无痕1989
如果要让他输出625改怎么做呢
#10
风过无痕19892020-12-03 23:25
回复 9楼 尔二
printf("%d = %d * %d",M,n,n)

[此贴子已经被作者于2020-12-3 23:26编辑过]

#11
尔二2020-12-04 09:41
回复 10楼 风过无痕1989
哦哦,我想复杂了
#12
mingds19182020-12-14 20:00
1