zoukankan      html  css  js  c++  java
  • 洛谷-P1618 三连击(升级版)

    题目描述

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

    输入格式

    三个数,A B C。

    输出格式

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

    输入输出样例

    输入 #1

    1 2 3
    

    输出 #1

    192 384 576
    219 438 657
    273 546 819
    327 654 981
    

    说明/提示

    保证A<B<C

    题目大意及分析

    题目要求就是在1~9九个数中三个数为一组排列,组成三个三位数,并且需要满足 A:B:C 的比例。

    因为这三个数不能重复选,所以可以得到最小的一个三位数为123。所以就可以从123开始暴力求解了,有两个小细节如下:

    1. 所得到的三位数中不能含有0这个数。
    2. 这个三位数自身元素也不能够重复。

    代码

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int q,b,c,sum=0,temp;
        cin >> q >> b >> c;
        for(int i=123;i<999;i++)
        {
            int a[10]={0},s=0;
            if(i/q*c>999)
                break;
            if(i%q!=0)
                continue;
            temp = i;//第一个数判断开始;
            for(int n=0;n<3;n++)
            {
                if(temp%10==0||a[temp%10]==1)
                {
                    s=1;
                    break;
                }
    
                a[temp%10]=1;
                temp = temp / 10;
    
            }
            if(s==1) continue;
            int j=i/q*b;
            temp = j;//第二个数判断开始;
            for(int n=0;n<3;n++)
            {
                if(a[temp%10]==0&&temp%10!=0)
                    a[temp%10]=1;
                else
                {
                    s=1;
                    break;
                }
                temp = temp/10;
            }
            if(s==1) continue;
            int k=i/q*c;
            temp = k;//第三个数判断开始;
            for(int n=0;n<3;n++)
            {
                if(a[temp%10]==0 && temp%10!=0)
                    a[temp%10]=1;
                else
                {
                    s=1;
                    break;
                }
                temp = temp/10;
            }
            if(s==1) continue;
            else
            {
                cout << i << " " << j << " " << k <<endl;
                sum++;
            }
        }
        if(sum==0)
        {
            cout << "No!!!" <<endl;
        }
        return 0;
    }
    

    更多内容大家可以访问我的个人博客:一只大大怪

  • 相关阅读:
    截取表单提交的字符串信息转换成对象 -- 前端面试题(一)
    HTML5 简单归纳 -- 前端知识 (二)
    02_安装Linux
    01_Linux 简介
    Mysql学习笔记八:Mysql操作
    Mysql学习笔记七:常用SQL语句
    Mysql学习笔记六:事务
    Mysql学习笔记五:修改
    Mysql学习笔记四:查询
    Mysql学习笔记二:主键、外键
  • 原文地址:https://www.cnblogs.com/cydi/p/11455669.html
Copyright © 2011-2022 走看看