p1772 巧妙填数
描述
将1,2,⋯,9共99个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例。
试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576192,384,576满足以上条件。
格式
输入格式
无输入。
输出格式
需要输出全部结果。每行输出3个数 用空格隔开。按照字典序的顺序输出。
思路
模拟。
代码
#include <stdio.h> #include <stdlib.h> int main() { int number[9]={1,2,3,4,5,6,7,8,9}; int n[9]={1,2,3,4,5,6,7,8,9}; int i,j,k,p,q,index=0; int s,s2,s3; int h,t,l,h2,t2,l2,h3,t3,l3; for(i=0;i<9;i++){ n[i]=-1; for(j=0;j<9;j++){ if(n[j]==-1){ continue; } n[j]=-1; for(k=0;k<9;k++){ if(n[k]==-1){ continue; } s=100*number[i]+10*number[j]+number[k]; s2=s*2; s3=s*3; h=number[i]; t=number[j]; l=number[k]; h2=s2/100; t2=(s2-h2*100)/10; l2=(s2-h2*100-t2*10); h3=s3/100; t3=(s3-h3*100)/10; l3=(s3-h3*100-t3*10); int temp[9]={h,t,l,h2,t2,l2,h3,t3,l3}; for(p=0;p<9;p++){ for(q=0;q<9;q++){ if(number[p]==temp[q]){ index++; break; } } } if(index==9){ printf("%d %d %d\n",s,s2,s3); } index=0; } n[j]=j+1; } n[i]=i+1; } return 0; }