蓝桥杯 - 数的分解

题目
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包
含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。

答案:40785

心得:

  1. 条件看清楚,不要漏条件
  2. 加法的交换只算一种 → i<j && j<k
  3. 不包含2和4 → 取余判断,布尔类型的初始化
  4. 在printf语句中加入计数器,初始化a = 0。要注意a++是从0开始,++a是从1开始
#include<stdio.h> 
int main()
{
 int a = 0;
 int i,j,k;
 int t = 0;
 int boolean1 = 0,boolean2 = 0,boolean3 = 0;
 for(i = 1;i<2018;i++)
 {
  t = i;
  boolean1 = 0;
  while(t>0)
  {
   if(t%10 == 2||t%10 == 4)
    boolean1 = 1;
   t = t/10;
  }
  for(j = 1;j<2018;j++)
  {
   t = j;
   boolean2 = 0;
   while(t>0)
   {
    if(t%10 == 2||t%10 == 4)
     boolean2 = 1;
    t = t/10;
   }
   for(k = 1;k<2018;k++)
   {
    t = k;
    boolean3 = 0;
    while(t>0)
    {
     if(t%10 == 2||t%10 == 4)
      boolean3 = 1;
     t = t/10;
    }
    if(boolean1 == 0 && boolean2 == 0 && boolean3 == 0)
    {
     if(i!=j && i!=k && k!=j)
     {
      if(i+j+k == 2019 && i<j && j<k)
       printf("%d + %d + %d     %d\n",i,j,k,++a);
     }
    }
    
   }
  }
 }
 return 0;
 } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值