ACM笔记(没听懂系列)(死活看不懂系列)
- 三连击
题目大意:
将1~9共九个数分成三组,分别组成三个三位数且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。
思路分析:
1》确定数据范围
2》求满足条件的数:
[九重循环?] [三重循环?][一重循环?]
3》输出数据
int pan(int a,int b)
{ //what’s 函数
int r[4],s[4];
r[1]=a%10; r[2]=(a/10)%10;
r[3]=a/100;
s[1]=b%10; s[2]=(b/10)%10;
s[3]=b/100;
//r[]、s[] a,b的每一位的值
if(r[1]==r[2]||r[2]==r[3]||r[1]==r[3])
return 0;
if(s[1]==s[2]||s[2]==s[3]||s[1]==s[3])
return 0;
//不与自身相同
for(int i=1;i<=3;i++)
if(r[i]==0) return 0;
for(int i=1;i<=3;i++)
if(s[i]==0) return 0;//不含有0
for(int k=1;k<=3;k++)
{
for(int j=1;j<3;j++)
if(s[k]==r[j]) return 0;
} //两数没有重复数值
return 1
}
int main()
{
int a,b,c;
for(int i=123;i<=329;i++)
{
//why范围?
a=i; b=a*2; c=a*3;
if(pan(a,b)==1&&pan(b,c)==1&&pan(a,c)==1)//三数互不相同
{
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
}