设为首页 加入收藏

TOP

c语言实现求解这样的6位数:SQRT(6位数)=3位数,9个数字互不相同(SQRT表示开平方)
2018-11-15 20:08:41 】 浏览:125
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=
 
			
color: #800080">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语言实现输出杨辉三角

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }