打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
三连击


问题描述

1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。 

例如:三个三位数192,384,576满足以上条件。 

输入

 

输出

输出所有符合要求的三个三位数,每一组占一行,数字之间由一个空格分隔。 

每组中的三个数字按照从小到大输出,各组之间按照每组的第一个数从小到大输出。


问题解析:

    因为要组成一个三位数,数值从100-999,同时题目要求使用1-9这九个数字,每个数字只能用一次,9个数字都用上。所以最小的三位数是123。组成的三个三位数构成1:2:3的比例,999/3=333,也就是最大的三位数是333,即329。

    所以最小数的取值范围为123-329。使用循环进行遍历,要想确保每个数字都用上1遍,可以使用桶排序的思想进行判断。


参考代码:

#include <iostream>

#include <cstring>

using namespace std;

int visit[10]={},a,b,c,i;

int main(){

    for( a = 123;a <= 329;a++){

        //每一组都需要重新将visit数组赋值为0 

        memset(visit,0,sizeof(visit));

        b = 2*a;

        c = 3*a;

        //统计ab、c三位数各个位数字

        visit[a/100]++;

        visit[a%10]++;

        visit[a/10%10]++;

        visit[b/100]++;

        visit[b%10]++;

        visit[b/10%10]++;

        visit[c/100]++;

        visit[c%10]++;

        visit[c/10%10]++;

        //如果有一个数字使用的次数不是1,则重新换下一组数据

        for(i = 1;i <=9;i++){

            if(visit[i] != 1){

                break;

            }

        }

        //如果1-9所有数字都使用了1次,则依次输出a,b,c

        if(i == 10){

            cout <<a << " " << b << " " << c << endl;

        }

    }

    return 0;

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python中水仙花数如何输出?
2012年9月26日小学四年级奥数练习题和答案《组数字》数学难题天天练
万以内数的认识练习题
第19讲 能被3整除的数的特征
用0,1,2,...,9这十个数字组成三位数加三位数等于四位数的加法竖式
数学游戏与好题巧解 | 第237题——加法原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服