三连击(升级版)

来源:互联网 发布:java返回值类型是类名 编辑:程序博客网 时间:2024/05/17 05:52

题目描述

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。

//感谢黄小U饮品完善题意

输入输出格式

输入格式:

三个数,A B C。

输出格式:

若干行,每行3个数字。按照每行第一个数字升序排列。

输入输出样例

输入样例#1:
1 2 3






输出样例#1:
192 384 576219 438 657273 546 819327 654 981
















这道题如果用全排列函数就十分简单了,思路就是从1~9的全排中找出符合条件的排列
也许还有其他的方法,之后再思考吧
#include "cstdio"#include "algorithm"using namespace std;main(){    int a,b,c,k[9]={1,2,3,4,5,6,7,8,9},flag=0;    scanf("%d%d%d",&a,&b,&c);    do    {        if(b*(k[0]*100+k[1]*10+k[2])/a==k[3]*100+k[4]*10+k[5]&&c*(k[0]*100+k[1]*10+k[2])/a==k[6]*100+k[7]*10+k[8])        {            printf("%d%d%d %d%d%d %d%d%d\n",k[0],k[1],k[2],k[3],k[4],k[5],k[6],k[7],k[8],k[9]);            flag=1;        }    }while(next_permutation(k,k+9));    if(flag==0)    printf("No!!!\n");    return 0;}


0 0
原创粉丝点击