生活中的数学问题(二)

题目一:用0,1,2,3,4,5,6,7,8,,9十个数字组成三个三位数,(每个数字不可重复,只能用一次),第二个数是第一个数的两倍,第三个数是第一个数的三倍。
分析:因为0的特殊性,所以这9个数字中必然没有0; 最小的数字大小在123——329之间;
One).先找出最小的基数,再把第二个,第三个数求出,把各个位置上的数提出来在判断,直到求出正确答案。

#include<iostream>
using namespace std;


void PD(int num,bool *S)   //对每一个出现过的数字进行标记
{
    int m;
    do{
        m=num%10;
        S[m]=false;
        num/=10;
    }while(num!=0);           
}  


int Find(bool *S,int n)    //统计使用过的数字数
{
    int temp=0;
    for(int q=0;q<n;q++)
    {
        if(S[q]==true)  temp++;
    }
    return temp;
}

int main()
{
    int Fir,Sec,Thr;
    bool *S=new bool[10];
    for(int i=0;i<10;i++)
        S[i]=true;      //初始化标记
    for(int num=123;num<=329;num++){
        Fir=num;
        Sec=2*num;
        Thr=3*num;
        PD(Fir,S);
        PD(Sec,S);
        PD(Thr,S);
        if(Find(S,10)==1)
            cout<<Fir<<ends<<Sec<<ends<<Thr<<endl;
        for(int i=0;i<10;i++)
            S[i]=1;     //初始化

    }
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值