【计科二班】寒假专题二

这次题目都挺简单的,只是为了让你们关注模拟题而已。

A.签到题,没什么好说的,注意细节就行。

代码:

#include<stdio.h>
int main(void)
{
    for(int i=0;i*5<=100;i++)
    {
        for(int j=0;j*3+i*5<=100;j++)
        {
            int k=100-i-j;
            if(k%3==0&&i*5+j*3+k/3==100)
            {
                printf("%d %d %d\n",i,j,k);
            }
        }
    }
    return 0;
}

B.相比A题稍微难了一点,不过题面有提示,只要再递推过程中取模即可。

代码

#include<iostream>
#define number 1000100
using namespace std;
const int mod=10007;
typedef long long ll;
ll fibonaci[number];
int main(void)
{
	ll n;
	cin>>n;
	ll i;
	fibonaci[1]=1;
	for(i=2;i<=n;i++)
	{
		fibonaci[i]=fibonaci[i-1]%mod+fibonaci[i-2]%mod;
	}
	cout<<fibonaci[n]%mod<<endl;
	return 0;
}

C.这题是为了让你们认识杨辉三角打表这个方法。在求组合数的时候经常用到。

代码:

#include<stdio.h>
typedef long long int ll;
int main(void)
{
	ll C[36][36]={0};
	C[0][0]=1;
	int i,j;
	for(i=1;i<=34;i++)
	{
		C[0][i]=1;
		for(j=1;j<=i;j++)
		{
			C[j][i]=C[j-1][i-1]+C[j][i-1];
		}
	}
	int n;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%lld",C[j][i]);
			if(j<i)
			{
				printf(" ");
			}
			else
			{
				printf("\n");
			}
		}
	}
	return 0;
}

D.简单的模拟,注意特判该店是否为最后一家店,从左往右扫描一遍店铺的同时更新beauty-max值和钱数sum。

代码

#include<stdio.h>
int min(int a,int b)
{
	if(a>=b)
	{
		return b;
	}
	else
	{
		return a;
	}
}
int main(void)
{
	int n;
	long long int sum;
	int beamax;
	int price[100100];
	int beauty[100100];
	scanf("%d",&n);
	int i,j;
	for(i=0;i<n-1;i++)
	{
		scanf("%d",&price[i]);
	}
	for(i=0;i<n-1;i++)
	{
		scanf("%d",&beauty[i]);
	}
	sum=price[0];
	beamax=beauty[0];
	i=1;
	while(i<n-1)
	{
		if(beauty[i]>beamax)
		{
			if(i<n-2)
			{
				if(beauty[i]>beauty[i+1])
				{
					sum+=price[i];
					beamax=beauty[i];
				}
				else if(beauty[i]==beauty[i+1])
				{
					sum+=min(price[i],price[i+1]);
					beamax=beauty[i];
				}
				else
				{
					sum+=price[i+1];
					beamax=beauty[i+1];
				}
				i+=2;
			}
			else
			{
				sum+=price[i];
				beamax=beauty[i];
				i++;
			}
		}
		else
		{
			i++;
		}
	}
	printf("%lld\n",sum);
	return 0;
}

E.模拟题,只需关注rating改变前后是否改变称号即可,用一个常量字符串数组来保存称号,其判断称号的操作可以封装为函数,不过我直接复制粘贴了,懒得去改( ̄︶ ̄)↗ 

顺便一提,目前rating世界榜一的T神前天上4000分的时候寄了😶

代码:

#include<stdio.h>
#include<string.h>
char level[15][50]={"Legendary grandmaster","International grandmaster","Grandmaster","International master","Master","Candidate master","Expert","Specialist","Pupil","Newbie"};
int main(void)
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n,k;
		scanf("%d%d",&n,&k);
		char cmp[50];
		if(k>=3000)
		{
			strcpy(cmp,level[0]);
		}
		else if(k>=2600)
		{
			strcpy(cmp,level[1]);
		}
		else if(k>=2400)
		{
			strcpy(cmp,level[2]);
		}
		else if(k>=2300)
		{
			strcpy(cmp,level[3]);
		}
		else if(k>=2100)
		{
			strcpy(cmp,level[4]);
		}
		else if(k>=1900)
		{
			strcpy(cmp,level[5]);
		}
		else if(k>=1600)
		{
			strcpy(cmp,level[6]);
		}
		else if(k>=1400)
		{
			strcpy(cmp,level[7]);
		}
		else if(k>=1200)
		{
			strcpy(cmp,level[8]);
		}
		else
		{
			strcpy(cmp,level[9]);
		}
		while(n--)
		{
			char get[50]={0};
			int a;
			scanf("%d",&a);
			k=k+a;
			if(k>=3000)
			{
				strcpy(get,level[0]);
			}
			else if(k>=2600)
			{
				strcpy(get,level[1]);
			}
			else if(k>=2400)
			{
				strcpy(get,level[2]);
			}
			else if(k>=2300)
			{
				strcpy(get,level[3]);
			}
			else if(k>=2100)
			{
				strcpy(get,level[4]);
			}
			else if(k>=1900)
			{
				strcpy(get,level[5]);
			}
			else if(k>=1600)
			{
				strcpy(get,level[6]);
			}
			else if(k>=1400)
			{
				strcpy(get,level[7]);
			}
			else if(k>=1200)
			{
				strcpy(get,level[8]);
			}
			else
			{
				strcpy(get,level[9]);
			}
			if(strcmp(cmp,get)!=0)
			{
				printf("%s -> %s\n",cmp,get);
				strcpy(cmp,get);
			}
		}
		printf("%s\n",cmp);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值