C / C++ 组合三位数

题目内容
  将0到9这十个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
输入格式
输出格式 “%d,%d,%d\n” (注意:输出的顺序为第一个3位数,第二个3位数,第三个3位数)

这里写图片描述

//C语言使用数组实现
#include <stdio.h>
#include<stdbool.h>
int main()
{   
    int p[10],num[3];
    for(int i=100;i<=333;i++)
    {
        for(int j=0;j<10;j++) //p[0]~p[9]都初始化为0 
        {
            p[j]=0;
        }
        for(int m=0;m<3;m++)
        {
            num[m]=i*(m+1);
            int mid=num[m];
            while(mid!=0)
            {
                p[mid%10]++;//每个数出现几次 
                mid/=10;
            }
        }
        bool flag=true;
        for(int k=0;k<10;k++)
        {
            if(p[k]>1)//出现多于一次 
            {
                flag=false;break;
            }
        }
        if(flag==true)
        {
            printf("%d,%d,%d\n" ,num[0],num[1],num[2]);
        }
    }
    return 0;
}
//当时感觉用C++写比较容易,但是限制语言必须是C,A过之后还是想用C++写一下
#include <iostream>
#include <set>
using namespace std;
int main()
{
    int num[3];
    for (int i=100;i<=333;i++)
    {
        set<int> s;
        for (int j=0;j<3;j++)
        {
            num[j]=i*(j+1);
            int mid=num[j];
            while(mid!=0)
            {
                s.insert(mid%10);//每个数字插入set容器
                mid/=10;
            }
        }
        if (s.size()==9)
        {
            cout<<num[0]<<","<<num[1]<<","<<num[2]<<endl;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36667170/article/details/79711666