数的分解

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

2.代码实现:

点击查看代码
#include <stdio.h>
#include <stdlib.h>
int judge(int a)           //判断分解的数中是否含有数字2或4
{
  while(a)
  {
    if(a % 10 == 2 || a % 10 == 4)
    {
      return 0;
    }
    a /= 10;
  }
  return 1;
}
int main()
{
  int i, j, k;
  int ans = 0;
  for(i = 1; i <= 2019; i ++)
  {
    for(j = 1; j <= 2019; j ++)
    {
      k = 2019 - i - j;
      if(judge(i) && judge(j) && judge(k))
      {
        if(i < j && j < k)      //确保分解的数各不相同
        {
          ans ++;
        }
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
posted @ 2022-03-04 00:28  自然力  阅读(314)  评论(0)    收藏  举报