P1008 三连击
题目:
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
2018.3.10
就目前水平来看,能想到的就是枚举了,主要问题:1,分离每个数字; 2,判断重复;
Q1,第一次写的时候,按照教材上的方法,对比别人的写的,更喜欢后者;
Q2, 目前找到的方法:
1,将9个数字放在一个数组里来记录数字出现的频率;
2,利用9个数字和为45,积为362,880;
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int a[10] = {0};//用来记录每个数字出现的次数; 5 int main() { 6 7 for(int i = 123; i < 329; i++) { 8 memset(a, 0, sizeof(a)); 9 a[i / 100] ++; //百位; 10 11 a[i /10 % 10] ++; //十位; 12 a[i % 10] ++; //个位; 13 14 int j = i * 2; 15 a[j / 100] ++; //百位; 16 a[j /10 % 10] ++; //十位; 17 a[j % 10] ++; //个位; 18 19 int k = i * 3; 20 a[k / 100] ++; //百位; 21 a[k /10 % 10] ++; //十位; 22 a[k % 10] ++; //个位; 23 24 for(int n = 1; n <= 9; n++) { 25 if(a[n] != 1) { 26 break; 27 } 28 if(n == 9) { //没有重复; 29 cout << i << " " << j << " " << k << endl; 30 } 31 } 32 } 33 return 0; 34 }

浙公网安备 33010602011771号