C++ACM笔记

这篇博客记录了ACM竞赛中一道关于将数字1~9分成三组,构造比例为1:2:3的三位数的问题。作者探讨了解题思路,详细阐述了如何通过C++编程来寻找满足条件的所有组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

   }

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值