c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)

Posted javaexplorer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)相关的知识,希望对你有一定的参考价值。

(1)设置10个元素的状态数组p,记录数字0~9在6位数和3位数中出现的情况。数组元素都赋值1,表示数字0~9没有被使用过。

(2)对尝试的每一个数3位数x,6位数=x*x,并取其各个位数字,数字作为数组的下标,若对应元素为1,则该数字第一次出现,

将对应的元素赋值为0,表示该数字已经出现一次。否则,若对应元素为0,则说明有重复数字,结束这次尝试。

(3)当状态数组p中9个元素为0时,就找到了问题的解。但这样判定有解,需要扫描一遍数组p。为避免这个步骤,

设置一个计数器k,在取x,x*x各个位数的过程中记录不同数字的个数,当k=9时就找到了问题的解。

 1 #include<stdio.h>
 2 int main()
 3 {
 4     long x;
 5     int p[10];
 6     int i,t,k;
 7     int num=0;
 8     int n,f,y,m;
 9     for(x=100;x<=999;x++)
10     {
11         for(i=0;i<=9;i++)
12             p[i]=1;
13             y=x*x; //y表示6位数
14             f=y;   //将y暂时存放在f中
15             n=x;   //n表示3位数
16         if(f<=999999)
17         {
18             k=0;
19         for(i=1;i<=6;i++)
20         {
21             t=n%10;
22             n=n/10;
23             m=f%10;
24             f=f/10;
25             if(m==t)
26             {
27             k=0;
28             break;
29             }
30             if(i<4)
31                if(p[t]==1)
32                {
33                 p[t]=0;
34                 k++;
35                }
36              else
37               {
38                k=0;
39                break;
40               }
41               if(p[m]==1)
42               {
43                p[m]=0;
44                k++;
45               }
46               else
47               {      
48                k=0;
49                break;
50               }
51         }
52             if(k==9)
53                 {
54                  num=num+1;
55                  printf("%ld	%d
",x,y);
56                 }
57         }
58         else
59             continue;
60     }
61             printf("
");
62             printf("%d
",num);
63     return 0;
64 }

 

以上是关于c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)的主要内容,如果未能解决你的问题,请参考以下文章

ZZNUOJ_用C语言编写程序实现1151:组合三位数之二(附完整源码)

大一c语言求水仙花数

注册填写密码,最小长度为6个字符是啥

C语言 获取Float小数位数

逆序排列多位数(C语言程序设计现代方法第二版(6.5))

c语言文件读写,如何正确的存取多位数(int)