C语言编程:请用1,2,5,7,8,9这六个数字(每个数字至多用一次)来组成一个五位数,使得它能被75整除?

请用1,2,5,7,8,9这六个数字(每个数字至多用一次)来组成一个五位数,使得它能被75整除,并求出这样的五位数有几个... 请用1,2,5,7,8,9这六个数字(每个数字至多用一次)来组成一个五位数,使得它能被75整除,并求出这样的五位数有几个 展开
 我来答
KlarkKenter
2021-06-02 · TA获得超过1681个赞
知道小有建树答主
回答量:1540
采纳率:0%
帮助的人:355万
展开全部

不算不知道,一算吓一跳,竟然有这么多能被75整除的数。

借助全排列函数,末尾是5,其余四位b[4]在a[5]中取,然后判断。

#include "stdafx.h"

#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

int a[5] = { 1,2,7,8,9 },b[4];

while (next_permutation(a, a + 5))

{

for (int i = 0; i < 4; i++)

{

b[i] = a[i];

}

int sum = b[0] * 10000 + b[1] * 1000 + b[2] * 100 + b[3] * 10 + 5;

if (sum % 75 == 0)

cout << b[0] << b[1] << b[2] << b[3] << 5 << endl;

}

system("pause");

    return 0;

}

arongustc
科技发烧友

2021-05-29 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5853万
展开全部
六个数和为1+2+5+7+8+9=32
5必须被选中,且必须再最后一位
去掉一个数必须和必须能被3整除,所以必须是2或者8
当2被去掉时,最后两位必须是75,所以方法有P(3,3)=6种
当8被去掉时,末尾是75的和25的分别是6种,
所以总共18种可能性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
格里编程办公技巧
科技发烧友

2021-05-29 · 编程、办公知识分享与学习
格里编程办公技巧
采纳数:434 获赞数:877

向TA提问 私信TA
展开全部
#include<stdio.h>

void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}

void permutation(int *nums, int index, int size, int *count)
{
if(index == size)
{
int sum = nums[0]*10000 + nums[1]*1000 + nums[2]*100 + nums[3]*10 + nums[4];
if(sum % 75 == 0)
{
printf("%d ", sum);
*count += 1;
}
}
else
{
for(int j = index; j < size; j++)
{
swap(&nums[j], &nums[index]);
permutation(nums, index+1, size, count);
swap(&nums[j], &nums[index]);
}
}
}

int main()
{ // 1,2,5,7,8,9
int nums1[] = {2,5,7,8,9};
int nums2[] = {1,5,7,8,9};
int nums3[] = {1,2,7,8,9};
int nums4[] = {1,2,5,8,9};
int nums5[] = {1,2,5,7,9};
int nums6[] = {1,2,5,7,8};
int count = 0;

permutation(nums1, 0, sizeof(nums1)/sizeof(int), &count);
permutation(nums2, 0, sizeof(nums2)/sizeof(int), &count);
permutation(nums3, 0, sizeof(nums3)/sizeof(int), &count);
permutation(nums4, 0, sizeof(nums4)/sizeof(int), &count);
permutation(nums5, 0, sizeof(nums5)/sizeof(int), &count);
permutation(nums6, 0, sizeof(nums6)/sizeof(int), &count);
printf("\nTotal count meets requirement is %d\n", count);
getchar();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
itunes0004
2021-05-30 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:516万
展开全部


#include <iostream>

#include <vector>

#include <algorithm>


using namespace std;


int main()

{

    vector<int> digits{1,2,5,7,8,9};

    do{

        int result = 0;

        for(int i = 0; i < 5; ++i) {

            result *= 10;

            result += digits[i];

        }

        if(result % 75 == 0) 

            cout << result << endl;

    } while(next_permutation(digits.begin(), digits.end()));


    return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
殇雪璃愁
2021-05-29 · TA获得超过293个赞
知道小有建树答主
回答量:697
采纳率:57%
帮助的人:40.2万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main(void)
{
int i, j, b,t;
static int a[6] = { 1, 2, 5, 7, 8, 9 };
while (b % 75 != 0)
{
for (i = 0,b=0; i < 5; i++)
b = 10 * b + a[i];
t = a[0];
j = rand() % 6 + 1;
a[0] = a[j];
a[j] = t;
}
printf("b=%d", b);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式