设为首页 加入收藏

TOP

c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)
2018-11-15 20:08:41 】 浏览:340
Tags:语言 实现 求解 这样 6位数 :SQRT 3位数 数字 互不 相同 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\t%d\n",x,y);
56                 }
57         }
58         else
59             continue;
60     }
61             printf("\n");
62             printf("%d\n",num);
63     return 0;
64 }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇A.Activity planning 下一篇C语言实现输出杨辉三角

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目