您的位置:首页 > 编程语言

(百例编程)60.1~9分成1:2:3的三个3位数

2012-06-10 16:01 393 查看
题目:将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍。问应当怎样分法?

/*题目:将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第
二个3位数的二倍,是第三个3位数的三倍。问应当怎样分法。
*/
//by as1138 2011-04-28

#include <iostream>
#include <vector>
using namespace std;

bool fenjie(int tem);
int iTval[9] = {0};
vector<int> viTval;
int tt = 0;

int main(void)
{
for (int i=123;i!=333;++i)
{
if (!fenjie(i))
continue;
if (fenjie(i*2)&&fenjie(i*3))
{
cout<<"第一个数为:"<<i<<endl;
cout<<"第二个数为:"<<i*2<<endl;
cout<<"第三个数为:"<<i*3<<endl;
cout<<endl;
}
}
return 0;
}

bool fenjie(int tem)
{
for (int i=0;i!=3;++i)
{
if(tem%10 == 0)
{
viTval.clear();
tt = 0;
return false;
}
viTval.push_back(tem%10);
tem /= 10;
}

tt++;
if (tt == 3)
{
for (vector<int>::iterator ite = viTval.begin();ite!=viTval.end();++ite)
{
iTval[*ite-1] = 1;
}
tt = 0;
for (int j=0;j!=9;++j)
{
if (iTval[j] != 1)
{
for (int m=0;m!=9;++m)
{
iTval[m] = 0;
}
viTval.clear();
return false;
}
}

for (j=0;j!=9;++j)
{
iTval[j] = 0;
}
viTval.clear();
return true;
}

if (tt != 3)
return true;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: