C/C++ 模拟专题

这篇博客聚焦于C/C++的模拟编程,通过两个实例来探讨这个问题:一个是农场中鸡和羊的数量推理,另一个是基于历史背景的数学问题——马克思的数学手稿中提出的头和费用的分配问题。这两个问题都需要通过编程来解决头与脚的数量关系以及费用分配的逻辑。

模拟专题

3004.生理高峰在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t;scanf("%d",&t);
    for(int m=0;m<t;m++)//p-23 e-28 i-33
    {
        int p,e,i,d;scanf("%d %d %d %d",&p,&e,&i,&d);
        int a,b,c;
        for(a=d+1;a<=21252;a++)
        {
            if((a-p)%23==0) break;
        }
        for(b=a;b<=21252;b+=23)
        {
            if((b-e)%28==0) break;
        }
        for(c=b;c<=21252;c+=23*28)
        {
            if((c-i)%33==0) break;
        }
        printf("case #%d:\n",m);
        printf("the next triple peak occurs in %d days.\n",c-d);
    }
    return 0;
}

2993.替换

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>


int main()
{
   int T = 0;
   scanf("%d", &T);
   for (int i = 0; i < T; i++) {
       int N=0;
       scanf("%d", &N);
       int a[30] = { 0 };
       int count = 0;
       for (int j = 0; j < N; j++)
           scanf("%d ", &a[j]);
       while (count != N) {
           count = 0;
           for (int j = 0; j < N; j++) {
               int cnt = 0;
               for (int k = j + 1; k < N; k++) {
                if (a[j] > a[k]) {
                    cnt++;
                }
            }
            if (a[j] == cnt) {
                count++;
            }
            a[j] = cnt;
        }
    }
    printf("case #%d:\n",i);
    for (int j = 0; j < N; j++) {
        printf("%d ", a[j]);
    }
    printf("\n");

}
}

2970.牧场

农场里养了一些鸡和羊,如果所有动物加在一起一共 3 个头、8 只脚,可以推断出有 2 只鸡、1 只羊。假设有N个头,M只脚,请问有多少只鸡,多少只羊。如果无解,输出 Impossible。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t;scanf("%d",&t);
    for(int i=0;i<t;i++)
    {
        int head,feet;scanf("%d %d",&head,&feet);
        printf("case #%d:\n",i);
        int chick=0,sheep=0;
        if(feet%2==0)
        {
            if(feet/2-head>=0)
            {
                sheep=feet/2-head;
                chick=head-sheep;
                if(chick>=0) printf("%d %d\n",chick,sheep);
                else printf("Impossible\n");
            }
            else printf("Impossible\n");
        }
        else printf("Impossible\n");
    }
    return 0;
}

2984.数学手稿

马克思一生酷爱数学,从 19 世纪 40 年代起,直到逝世前不久,数十年如一日地利用闲暇时间学习和钻研数学。他在《数学手稿》中提出如下问题:有30个人(包括男人、女人和小孩)在一家饭店吃饭共花50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有多少人?现在请你编写程序解决类似这样的问题。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t;scanf("%d",&t);
    for(int i=0;i<t;i++)
    {
        long long men,women,child;
        int head,flag=0;
        long long cash;
        scanf("%d %lld",&head,&cash);
        printf("case #%d:\n",i);
        for(men=0;men<=head;men++)
        for(women=0;women<=head;women++)
        for(child=0;child<=head;child++)
        if(3*men+2*women+child==cash)
        if(men+women+child==head)
        {
            flag=1;printf("%lld %lld %lld\n",men,women,child);
        }

        if(flag==0) printf("-1\n");
    }
    return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值