7.17 C语言复习

                                                                            鸡兔同笼问题

代码一:

#include <iostream>

using namespace std;

int main()
{
    int c,r,n,a,max,min;
    cin>>n;//请输入测试数据的组数
    for(int i=1;i<=n;i++)
    {
        cin>>a;

        if(a%4==0)
            {
                min=a/4;//最少有几只动物
                max=a/2;//最多有几只动物
            }
        else if(a%2==0&&a%4!=0)
            {
                max=a/2;//最多有几只动物
                for(c=1;;c++)
                    {
                        if( (2*c+4*r)==a)
                            min=c+r;//计算最少有几只动物
                        else
                            continue;
                    }
            }
        else if(a%2!=0)
            {
                max=0;
                min=0;
            }
        cout<<min<<" "<<max<<endl;
    }

    return 0;
}

代码二:

#include <stdio.h>

int main()
{
    int n,a,n1,n2,i;
    scanf("%d",&n);                 //输入测试数据的组数
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a);         //输入脚的数目
        if(a%4==0)
            printf("%d %d",a/4,a/2);
        else if (a%2==0)
            printf("%d %d",a/4+1,a/2);
        else
           printf("0 0");
    }
    return 0;
}
                                                                                   校门外的树(直接模拟)

#include <stdio.h>
#include <string.h>

扫描二维码关注公众号,回复: 2265436 查看本文章

int main()
{
    int L,M,a,b,cnt=0,i,j,k;
    int T[10000];
    while(scanf("%d %d",&L,&M)!=EOF)
    {
        memset(T,0,L);
        for( i=1;i<=M;i++)
        {
            scanf("%d %d",&a,&b);
            for( j=a;j<=b;j++)
                T[j]=1;
        }
        for( k=0;k<=L;k++)
            if(T[k]==0)
               cnt++;
        printf("%d",cnt);

    return 0;
    }
}

                                                                                      装箱问题

#include <stdio.h>
#include <string.h>

int main()
{
    int a,b,c,d,e,f,n1,n2,n3,n;
    while(scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f)!=EOF)
    {
        if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
            break;
        int u[4]={0,5,3,1};
        n1=f+e+d+(c+3)/4;           //长宽>=3×3的产品所占用的箱子数目
        n2=5*d+u[c%4];                 //3×3箱子数目分别为4k,4k+1,4k+2,4k+3时所剩余的2×2空位
        if(n2>=b)               //如果空位比实际2×2箱子多
            n=n1;
        else
            n=n1+(b-n2+8)/9;
        n3=36*n-(36*f+25*e+16*d+9*c+4*b);
        if(a<=n3)
            printf("%d\n",n);
        else
            {
                n+=((a-n3)+35)/36;
                printf("%d\n",n);
            }
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/s50131/article/details/81076541