题目内容
将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;
}
}
}