目录
题目
要求
思路
最后的代码
结果
题目
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
要求
这是一道结果填空的题,你只需要算出结果后提交即可
思路
思路很简单——穷举每一个数字
每个正整数都不包含数字 2 和 4就把各个位数的千位百位十位各位提取出来分别判断
bool Panduan(int n)
{
int a = n / 1000;
int b = (n - a * 1000) / 100;
int c = (n - a * 1000 - b * 100) / 10;
int d = n % 10;
if (a == 2 || a == 4 || b == 2 || b == 4 || c == 2 || c == 4 || d == 2 || d == 4)
{
return false;
}
else
{
return true;
}
}
关于筛选只是顺序不同的数字可以固定大小比如三个数字x,y,z固定x>y>z这样就不会因为顺序不一样,造成多算出来结果
for (int i = 1; i<2019 ;i++)
{
for (int j = i+1; j < sum_1 - i; j++)
{
int z = sum_1 - i - j;
...
}
}
最后的代码
就是文章来源:https://www.toymoban.com/news/detail-627010.html
#include <iostream>
using namespace std;
int sum_1 = 2019;
bool Panduan(int n)
{
int a = n / 1000;
int b = (n - a * 1000) / 100;
int c = (n - a * 1000 - b * 100) / 10;
int d = n % 10;
if (a == 2 || a == 4 || b == 2 || b == 4 || c == 2 || c == 4 || d == 2 || d == 4)
{
return false;
}
else
{
return true;
}
}
int main()
{
int sum_max = 0;
for (int i = 1; i<2019 ;i++)
{
for (int j = i+1; j < sum_1 - i; j++)
{
int z = sum_1 - i - j;
if (i == z || z == j || j >= z)
{
continue;
}
if (Panduan(i) && Panduan(j) && Panduan(z))
{
sum_max++;
}
else
{
continue;
}
}
}
cout << sum_max << endl;
return 0;
}
结果
40785文章来源地址https://www.toymoban.com/news/detail-627010.html
到了这里,关于2019蓝桥杯省赛题目——“数的分解”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!