习题2-6:排列

2019-12-30 16:00:25来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

习题2-6:排列

原先在《算法竞赛入门经典》看过这题,当时没想出来选择百度。结果洛谷再次跳出来了。很尴尬,忘了做题方法的我继续百度。重做了一遍,很惭愧

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main(void)
 4 {
 5     int a, b;
 6     int sum=0;
 7     int ar[15];
 8     memset(ar, 0, sizeof(ar));//memset将ar数组全部格式化为0
 9     for (int n = 111; n <= 333; n++)//在111前不会重复,到333之后第三个数溢出1000
10     {
11         sum = 0;//重置计数器
12         a = n * 2;
13         b = n * 3;
14         ar[n / 100] = ar[n / 10 % 10] = ar[n % 10] = 1;//将出现的数字的位数在数组中记为1
15         ar[a / 100] = ar[a / 10 % 10] = ar[a % 10] = 1;
16         ar[b / 100] = ar[b / 10 % 10] = ar[b % 10] = 1;
17         for (int i = 1; i <= 9; i++)
18             sum += ar[i];//将数组中9个数字加起来
19         if (sum == 9)//若为9,则每个数字都出现过一遍
20             printf("%d %d %d\n", n, a, b);
21         memset(ar, 0, sizeof(ar));//重置数组
22     }
23     return 0;
24 
25 }

原文链接:https://www.cnblogs.com/Moonlightcode/p/12121881.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C++引用计数设计与分析(解决垃圾回收问题)

下一篇:C++ 一篇搞懂继承的常见特性