求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值相关的知识,希望对你有一定的参考价值。

参考技术A 1, 2, 3, 4, 5(共5个), (+8) , 14, 15, 16, 17, 18(共5个), (+8), ...
所以,
(5+8) * N <= 2012;
求出N, 然后K = 5*N;

代码:
unsigned int N = 0, sum = 0;
while (sum <= 2012)

++N;
sum += N * 13;

unsigned int maxNum = 5*N;

随手想的,不知道可不可以
参考技术B #include<stdio.h>
void main()

int k = 0,i,m = 0;
for(i = 1; i <= 2012;)

m++;
k++;
printf("%-5d",i++);
if(k % 10 == 0)
printf("\n");
if(m == 5)

i += 8;
m = 0;


printf("k = %d\n",k);
追问

我运行不了,另外问下,答案是多少啊?

追答

你没有运行环境吗?你可以在C语言二级加油站那里下的
运行结果:
1 2 3 4 5 14 15 16 17 18
27 28 29 30 31 40 41 42 43 44
………………………………………………
1977 1978 1979 1980 1981 1990 1991 1992 1993 1994
2003 2004 2005 2006 2007
k = 775
Press any key to continue

中间省略了,因为字数有限,不允许,你可以检验一下

本回答被提问者和网友采纳

求组合数

编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。

输入

输入n 和r 的值; 当用户输入0 0 时,程序结束。

输出

根据公式: C(n,r) = C(n, r-1) * (n - r + 1) / r 输出运算结果 输入数据不满足题意时候,输出"error!"

样例输入

5 3
10 20
50 3
0 0

样例输出

10
error!
19600
#include<stdio.h>
int main()
{
    int n,r,sum,i;
    while(1)
    {
        scanf("%d%d",&n,&r);
        sum=1;
        if(n==0&&r==0)
        {
            break;
        }
        if(n<r)
        {
            printf("error!
");
        }
        else
        {
                   for(i=1;i<=r;i++)
                   {
                   sum=sum*(n-i+1)/i;
                   }
                   printf("%d
",sum);
    }
    }
        return 0;
}

 

以上是关于求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值的主要内容,如果未能解决你的问题,请参考以下文章

用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数

求组合数

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

c语言中如何提取二进制数中的某一位?

C语言程序:从N个数中随机取出100个不同的数