蓝桥杯day5刷题日记-分巧克力-天干地支-求和

 P8647 [蓝桥杯 2017 省 AB] 分巧克力

思路:二分查找

#include <iostream>
using namespace std;
int n,k;
int h[100010],w[100010];

bool check(int x)
{
	int sum=0;
	for(int i=0;i<n;i++)
	{
		sum+=(h[i]/x)*(w[i]/x);
		if(sum>=k) return true;
	}
	return false;
}

int main()
{
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		cin>>h[i]>>w[i];
	}
	int l=1,r=100010;
	while(l+1<r)
	{
		int mid=(l+r)/2;
		if(check(mid)) l=mid;
		else r=mid;
	}
	cout<<l; 
	return 0;
}

P8738 [蓝桥杯 2020 国 C] 天干地支

思路:首先确定0004年是甲子年,并以此为基点。

#include <iostream>
using namespace std;
int x;

int main()
{
	string s1[]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","kui"};
	string s2[]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
	cin>>x;
	if(x<4){
		if(x==3) cout<<"kuihai";
		if(x==2) cout<<"renxu";
		if(x==1) cout<<"xinyou";
	    return 0;
	}
	x=(x-4)%60;60年一个循环,找出这个数在循环里的位置
	int a=x%10,b=x%12;然后通过求余数就可以找到答案
	cout<<s1[a]<<s2[b];
	return 0;
}

P8772 [蓝桥杯 2022 省 A] 求和

思路:先算前缀和,然后就遍历

#include <iostream>
using namespace std;
int n;
long long sum;
int a[200010];
long long q[200010];

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		q[i]=q[i-1]+a[i];
	}
	for(int i=1;i<n;i++)
	{
		sum+=(q[n]-q[i])*a[i];
	} 
	cout<<sum;
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值